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

dichiarazioni preparate emulate rispetto a dichiarazioni preparate reali

Hai ragione, le vere affermazioni preparate devono essere supportate dal server. Un vero preparato significa interrogare il database in due passaggi.

Il primo passaggio consiste nell'invio di un modello di query, che il server può precompilare. Il motore di database prepara anche in anticipo il piano di esecuzione (principalmente, quali indici verranno utilizzati per servire la query effettiva).

Il secondo passaggio consiste nel fornire valori effettivi ai segnaposto ed eseguire la query effettiva con questi parametri.

Questo in genere consente un'esecuzione più rapida di diverse query simili, perché 1. la query è già stata precompilata (il piano di esecuzione è già calcolato) e 2. solo i valori dei parametri vengono inviati successivamente.

Una query emulata è solo uno zucchero sintattico, che consente solo l'invio più semplice (non l'esecuzione più veloce) di diverse query simili successive. Le istruzioni SQL complete vengono inviate al server ogni volta che viene eseguita una query emulata.

Quando il server non supporta le istruzioni preparate reali, si consiglia comunque di utilizzare le istruzioni preparate emulate, perché il driver si occupa comunque dell'escape dei valori per te, rendendo meno probabile l'iniezione SQL.