sql >> Databáze >  >> RDS >> Mysql

Co to znamená, když řeknu, že Připravený výpis je předkompilován?

Když použijete připravený příkaz (tj. předkompilovaný příkaz), jakmile DB získá tento příkaz, zkompiluje jej a uloží do mezipaměti, aby mohla použít poslední zkompilovaný příkaz pro následné volání stejného příkazu. Stane se tedy předkompilovaným pro po sobě jdoucí volání.

Obvykle používáte připravený příkaz s proměnnými vazby, kde poskytujete proměnné za běhu. Nyní, co se stane pro postupné provádění připravených příkazů, můžete zadat proměnné, které se liší od předchozích volání. Z pohledu DB nemusí sestavovat příkaz pokaždé, stačí vložit proměnné vazby v čase rumu. Takže to bude rychlejší.

Další výhody připravených výpisů jsou :-

1)ochrana proti útoku SQL-injection

2) Rychlejší pro po sobě jdoucí volání stejných příkazů

Jak to funguje :-

  1. Předkompilaci provádí databáze. Některé jednodušší databáze nepředkompilují příkazy vůbec. Jiní jej mohou předkompilovat při volání PrepareStatement a jiní to mohou provést při prvním volání příkazu spuštění, přičemž při kompilaci (vytvoření plánu pro) příkazu vezmou v úvahu hodnoty parametrů.

  2. Databáze, které provádějí předkompilační příkazy, je obvykle ukládají do mezipaměti, takže se vší pravděpodobností ps1 nebude znovu zkompilován. Některé ovladače JDBC (např. Oracle) dokonce ukládají připravené příkazy do mezipaměti, takže je ve skutečnosti neuzavřely, když bylo zavoláno ps.close().

  3. Databáze obecně ukládají příkazy do mezipaměti, dokud je něco z mezipaměti nevytlačí.

Podrobnosti najdete na této wiki odkaz



  1. Jak načíst data dvou sloupců ve formátu A, B v Oracle

  2. freeTDS nepoužívá svou konfiguraci

  3. Příkaz SQL ignoruje parametr where

  4. Adminer – Pokročilý nástroj pro správu webových databází pro Linux