sql >> Database teknologi >  >> RDS >> Mysql

emulerede forberedte udsagn vs rigtige forberedte udsagn

Du har ret, rigtige forberedte udsagn skal understøttes af serveren. En rigtig forberedt betyder at forespørge databasen i to trin.

Det første trin består i at sende en forespørgselsskabelon, som serveren kan præ-kompilere. Databasemotoren forbereder også på forhånd udførelsesplanen (for det meste hvilke indekser der skal bruges til at betjene den faktiske forespørgsel).

Det andet trin er at give faktiske værdier til pladsholderne og køre den faktiske forespørgsel med disse parametre.

Dette tillader typisk hurtigere eksekvering af flere lignende forespørgsler, fordi 1. forespørgslen allerede er blevet præ-kompileret (udførelsesplanen er allerede beregnet) og 2. kun parameterværdierne sendes efterfølgende.

En emuleret forespørgsel er blot et syntaktisk sukker, der kun tillader lettere afsendelse (ikke hurtigere udførelse) af flere på hinanden følgende, lignende forespørgsler. Fuld SQL-sætninger sendes til serveren, hver gang en emuleret forespørgsel udføres.

Når serveren ikke understøtter rigtige forberedte sætninger, anbefales det stadig at bruge emulerede forberedte sætninger, fordi driveren stadig sørger for at undslippe værdier for dig, hvilket gør SQL-injektion mindre sandsynlig.



  1. Giv tilladelser på tabelniveau i SQL Server

  2. Hvordan virker COPY, og hvorfor er det så meget hurtigere end INSERT?

  3. RoR:Kan ikke ændre_kolonne i postgres, fint i MySQL (MySQL til udvikling, Postgres på Heroku)

  4. Hvordan øges dbms_output buffer?