Mysql
 sql >> Datenbank >  >> RDS >> Mysql

emulierte vorbereitete Anweisungen vs. echte vorbereitete Anweisungen

Sie haben Recht, echte vorbereitete Anweisungen müssen vom Server unterstützt werden. Eine echte Vorbereitung bedeutet, dass die Datenbank in zwei Schritten abgefragt wird.

Der erste Schritt besteht darin, eine Abfragevorlage zu senden, die der Server vorkompilieren kann. Die Datenbank-Engine bereitet auch im Voraus den Ausführungsplan vor (hauptsächlich, welche Indizes verwendet werden, um die eigentliche Abfrage zu bedienen).

Der zweite Schritt besteht darin, den Platzhaltern tatsächliche Werte zuzuweisen und die eigentliche Abfrage mit diesen Parametern auszuführen.

Dies ermöglicht normalerweise eine schnellere Ausführung mehrerer ähnlicher Abfragen, da 1. die Abfrage bereits vorkompiliert wurde (der Ausführungsplan ist bereits berechnet) und 2. nur die Parameterwerte nachträglich gesendet werden.

Eine emulierte Abfrage ist nur ein syntaktischer Zucker, der nur ein einfacheres Senden (nicht eine schnellere Ausführung) mehrerer, aufeinanderfolgender, ähnlicher Abfragen ermöglicht. Vollständige SQL-Anweisungen werden jedes Mal an den Server gesendet, wenn eine emulierte Abfrage ausgeführt wird.

Wenn der Server keine echten vorbereiteten Anweisungen unterstützt, wird dennoch empfohlen, emulierte vorbereitete Anweisungen zu verwenden, da der Treiber sich immer noch um das Escape-Werte für Sie kümmert, wodurch eine SQL-Einschleusung weniger wahrscheinlich wird.