⊗ppSpOtSQ 80 of 83 menu

Optimalisatie van het gebruik van SQL queries in PHP

Het uitvoeren van SQL queries naar een database is een erg trage operatie. Daarom is het nodig te proberen het aantal queries naar de database te minimaliseren.

De meest voorkomende fout is het uitvoeren van een groot aantal SQL queries in een lus, terwijl er alternatieve queries bestaan die het gewenste in één opdracht mogelijk maken.

Laten we naar een voorbeeld kijken.

Stel dat we een array krijgen met id van records in de database en we moeten records met dergelijke id verwijderen.

Zonder lang na te denken, kan men zo'n "prachtige" constructie schrijven:

<?php $ids = [1, 2, 3, 4, 5]; // array voor verwijdering foreach ($ids as $id) { mysqli_query($link, "DELETE FROM users WHERE id=$id"); } ?>

Het probleem met deze code is dat in de lus een groot aantal queries wordt uitgevoerd. Stel je voor dat er 100 elementen in de array zitten - er worden 100 queries naar de database uitgevoerd!

De speciale valkuil van de beschreven taak is dat tijdens de ontwikkeling van de site de database klein is en queries erg snel worden uitgevoerd. Echter, naarmate de site op de hosting draait, zal de database groeien, queries zullen steeds langzamer worden uitgevoerd, en het kan zover komen dat door het uitvoeren van honderd queries in een lus de site er meer dan een minuut over doet om te laden!

Met heel weinig inspanning kan men ervoor zorgen dat er slechts één query wordt uitgevoerd, zoals hier:

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

Optimaliseer de onderstaande 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); ?>
Nederlands
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wij gebruiken cookies voor de werking van de site, analyse en personalisatie. De verwerking van gegevens gebeurt volgens het Privacybeleid.
alles accepteren aanpassen weigeren