⊗ppSpOtSQ 80 of 83 menu

Optimierung der Verwendung von SQL-Abfragen in PHP

Die Ausführung von SQL-Abfragen an eine Datenbank ist eine sehr langsame Operation. Daher sollte man versuchen, die Anzahl der Abfragen an die Datenbank zu minimieren.

Der häufigste Fehler ist die Ausführung vieler SQL-Abfragen in einer Schleife, obwohl es alternative Abfragen gibt, die es erlauben, das Gewünschte mit einem einzigen Befehl auszuführen.

Sehen wir uns ein Beispiel an.

Nehmen wir an, wir haben ein Array mit id von Datensätzen in der Datenbank und wir müssen die Datensätze mit diesen id löschen.

Ohne lange nachzudenken, könnte man so eine "wunderbare" Konstruktion schreiben:

<?php $ids = [1, 2, 3, 4, 5]; // Array zum Löschen foreach ($ids as $id) { mysqli_query($link, "DELETE FROM users WHERE id=$id"); } ?>

Das Problem dieses Codes ist, dass in der Schleife zahlreiche Abfragen ausgeführt werden. Stellen Sie sich vor, dass das Array 100 Elemente enthält - es werden 100 Abfragen an die Datenbank ausgeführt!

Die besondere Falle der beschriebenen Aufgabe liegt darin, dass während der Entwicklung der Website die Datenbank klein ist und die Abfragen sehr schnell ausgeführt werden. Jedoch, im Laufe des Betriebs der Website auf dem Hosting wird die Datenbank wachsen, die Abfragen werden immer langsamer ausgeführt, und es kann soweit kommen, dass due zur Ausführung von hundert Abfragen in einer Schleife die Website mehr als eine Minute lädt!

Mit sehr wenig Aufwand kann man erreichen, dass nur eine einzige Abfrage ausgeführt wird, so wie hier:

<?php $ids = [1, 2, 3, 4, 5]; $str = implode(',', $ids); // erhalten den String '1,2,3,4,5' mysqli_query($link, "DELETE FROM users WHERE id IN ($str)"); ?>

Optimieren Sie den untenstehenden Code:

<?php $arr = [1, 2, 2, 4, 5]; $res = []; for ($i = 1; $i < count($arr); $i++) { $note = mysqli_query($link, "SELECT * FROM users WHERE id=$id"); for ($data = []; $row = mysqli_fetch_assoc($note); $data[] = $row); $res[] = $data; } var_dump($res); ?>
Deutsch
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wir verwenden Cookies für den Betrieb der Website, Analyse und Personalisierung. Die Datenverarbeitung erfolgt gemäß der Datenschutzerklärung.
alle akzeptieren anpassen ablehnen