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

emulované připravené výkazy vs skutečné připravené výkazy

Máte pravdu, skutečně připravené výpisy musí být podporovány serverem. Skutečná připravenost znamená dotazování databáze ve dvou krocích.

První krok spočívá v odeslání šablony dotazu, kterou může server předkompilovat. Databázový stroj také předem připraví plán provádění (většinou jaké indexy budou použity pro obsluhu skutečného dotazu).

Druhým krokem je zadání skutečných hodnot zástupným symbolům a spuštění skutečného dotazu s těmito parametry.

To obvykle umožňuje rychlejší provádění několika podobných dotazů, protože 1. dotaz již byl předkompilován (plán provádění je již vypočítán) a 2. následně jsou odesílány pouze hodnoty parametrů.

Emulovaný dotaz je pouze syntaktický cukr, který pouze umožňuje snadnější odeslání (nikoli rychlejší provádění) několika po sobě jdoucích podobných dotazů. Úplné příkazy SQL jsou odeslány na server pokaždé, když je proveden emulovaný dotaz.

Pokud server nepodporuje skutečné připravené příkazy, stále se doporučuje používat emulované připravené příkazy, protože ovladač se stále stará o únik hodnot za vás, což snižuje pravděpodobnost injekce SQL.



  1. Výsledky oddělené čárkami v SQL

  2. Deklarace struktury n-tice záznamu v PL/pgSQL

  3. Hašovací spojení ve sloupcích s možnou hodnotou Null

  4. Co to znamená „normalizovat“ databázi?