sql >> Databasteknik >  >> RDS >> Mysql

emulerade förberedda uttalanden vs verkliga förberedda uttalanden

Du har rätt, riktiga förberedda påståenden måste stödjas av servern. En verklig förberedd innebär att fråga databasen i två steg.

Det första steget består i att skicka en frågemall som servern kan förkompilera. Databasmotorn förbereder också i förväg exekveringsplanen (oftast vilka index som kommer att användas för att betjäna den faktiska frågan).

Det andra steget är att ge platshållarna faktiska värden och köra den faktiska frågan med dessa parametrar.

Detta tillåter vanligtvis snabbare exekvering av flera liknande frågor, eftersom 1. frågan redan har förkompilerats (exekveringsplanen är redan beräknad) och 2. endast parametrarnas värden skickas därefter.

En emulerad fråga är bara ett syntaktiskt socker, som bara tillåter enklare sändning (inte snabbare exekvering) av flera på varandra följande, liknande frågor. Fullständiga SQL-satser skickas till servern varje gång en emulerad fråga exekveras.

När servern inte stöder riktiga förberedda uttalanden, rekommenderas det fortfarande att använda emulerade förberedda satser, eftersom drivrutinen fortfarande tar hand om escape-värden åt dig, vilket gör SQL-injektion mindre sannolikt.



  1. Antal rader med PDO

  2. Hur man filtrerar poster med aggregatfunktion AVG

  3. EBS R12 start- och stoppskript

  4. Hur man returnerar alla inaktiverade CHECK-begränsningar i SQL Server (T-SQL-exempel)