sql >> Database >  >> RDS >> Mysql

geëmuleerde voorbereide verklaringen versus echte voorbereide verklaringen

Je hebt gelijk, echt opgestelde uitspraken moeten door de server worden ondersteund. Een echte voorbereiding betekent dat u de database in twee stappen opvraagt.

De eerste stap bestaat uit het verzenden van een querysjabloon, die de server vooraf kan compileren. De database-engine bereidt ook van tevoren het uitvoeringsplan voor (meestal welke indexen zullen worden gebruikt om de eigenlijke query uit te voeren).

De tweede stap is het geven van werkelijke waarden aan de tijdelijke aanduidingen en het uitvoeren van de werkelijke query met deze parameters.

Dit maakt doorgaans een snellere uitvoering van verschillende vergelijkbare zoekopdrachten mogelijk, omdat 1. de zoekopdracht al vooraf is gecompileerd (het uitvoeringsplan is al berekend) en 2. alleen de parameterwaarden daarna worden verzonden.

Een geëmuleerde query is slechts een syntactische suiker, die het verzenden (niet snellere uitvoering) van meerdere, opeenvolgende, vergelijkbare query's alleen eenvoudiger maakt. Elke keer dat een geëmuleerde query wordt uitgevoerd, worden volledige SQL-instructies naar de server verzonden.

Als de server geen echte voorbereide instructies ondersteunt, wordt het toch aanbevolen om geëmuleerde voorbereide instructies te gebruiken, omdat de driver nog steeds voor escape-waarden zorgt, waardoor SQL-injectie minder waarschijnlijk wordt.



  1. Oracle SQL:een tabel bijwerken met gegevens uit een andere tabel

  2. Goede preventie van MYSQL-injectie?

  3. Hoe de tijdzone in MySQL te converteren

  4. MariaDB in Tokio