⊗ppSpOtSQ 80 of 83 menu

Optimalisering van SQL-navraegebruik in PHP

Die uitvoering van SQL-navrae na 'n databasis is 'n baie stadige operasie. Daarom is dit nodig om die aantal navrae na die databasis te minimeer.

Die mees algemene fout is die uitvoering van baie SQL-navrae in 'n lus, terwyl daar alternatiewe navrae bestaan wat dit moontlik maak om die verlangde met een opdrag uit te voer.

Kom ons kyk na 'n voorbeeld.

Gestel ons het 'n skikking met id-ers van rekords in die databasis en ons moet rekords met sulke id verwyder.

Sonder veel dink, kan 'n mens so 'n "wonderlike" konstruksie skryf:

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

Die probleem met hierdie kode is dat baie navrae in die lus uitgevoer word. Stel jou voor dat daar 100 elemente in die skikking is - daar sal 100 navrae na die databasis uitgevoer word!

Die spesifieke valstrik van die beskryfde taak is dat met die ontwikkeling van 'n webwerf die databasis klein is en navrae baie vinnig uitgevoer word. Maar, soos die webwerf op die hostingbediener werk, sal die databasis groei, navrae sal al hoe stadiger uitgevoer word, en dit kan tot so 'n punt kom dat as gevolg van die uitvoering van honderd navrae in 'n lus, die webwerf meer as 'n minuut sal neem om te laai!

Met net 'n bietjie moeite, kan 'n mens dit so maak dat slegs een navraag uitgevoer word, soos hier:

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

Optimaliseer die onderstaande kode:

<?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); ?>
Afrikaans
AzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικά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
Ons gebruik koekies vir die werking van die webwerf, ontleding en personalisering. Die verwerking van data geskied volgens die Privaatheidsbeleid.
aanvaar alles instel verwerp