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

Sollte ich vorbereitete Anweisungen für MySQL in PHP PERFORMANCE-WISE verwenden?

Die Geschichte

Dies war meine erste Stackoverflow-Antwort. Seitdem hat sich viel geändert, insbesondere die Einstellung und Entfernung der mysql-API. Auch wenn Sie noch PHP 5.6 verwenden, sollte die mysql_*-API nicht verwendet werden. Jetzt sind PDO oder mysqli die einzigen Optionen zur Auswahl. PDO ist aus vielen Gründen besser.

Werden vorbereitete Anweisungen über Seitenladevorgänge hinweg zwischengespeichert?

Dieselbe vorbereitete Anweisung wird nicht zwischen Seitenladevorgängen verwendet. Es muss jedes Mal zubereitet werden. Wenn es darauf ankommt, jede große Millisekunde zu quetschen, könnte eine gespeicherte Prozedur eine gute Idee sein (vorausgesetzt, Sie haben eine komplizierte Abfrage).

Für große Einfügungen (Tausende von Zeilen) Ein größerer Schub kann wahrscheinlich erzielt werden, indem Sie Ihre Daten in eine Textdatei ausgeben und sie mit LOAD DATA IN FILE laden. Es ist viel schneller als eine Reihe von Einfügungen.

Die ursprüngliche Antwort

Die Wahrheit ist, dass mysqli manchmal schneller ist und manchmal mysql api schneller ist. Aber der Unterschied ist wirklich sehr gering. Wenn Sie sich einen der Leistungstests im Internet ansehen, beträgt der Unterschied wirklich nur 10 bis 20 Millisekunden. Die beste Möglichkeit, die Leistung zu steigern, besteht darin, das Tabellendesign zu optimieren.

Viele der Tests, die beweisen, dass die ältere API schneller ist, vergessen bequemerweise, dass für maximale Sicherheit mysql_real_escape_string() für jede in der Abfrage verwendete Variable aufgerufen werden sollte.

Abfragen werden vom Server nur dann zwischengespeichert, wenn die Daten aller Tabellen, die in der Abfrage verwendet werden, unverändert geblieben sind.

Warte auf ein weiteres Update mit tatsächlichen Zahlen