⊗ppSpOtSQ 80 of 83 menu

Optimering af brug af SQL-forespørgsler i PHP

Udførelse af SQL-forespørgsler til en database er en meget langsom operation. Derfor er det nødvendigt at stræbe efter at minimere antallet af forespørgsler til databasen.

Den mest almindelige fejl er at udføre mange SQL-forespørgsler i en løkke, når der findes alternative forespørgsler, der tillader at opnå det ønskede med en enkelt kommando.

Lad os se på et eksempel.

Antag at vi har en matrix med id'er for poster i databasen, og vi er nødt til at slette poster med disse id'er.

Uden at tænke længe, kan man skrive en sådan "fantastisk" konstruktion:

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

Problemet med denne kode er, at der udføres mange forespørgsler i løkken. Forestil dig, at der er 100 elementer i matrixen - der vil blive udført 100 forespørgsler til databasen!

Den særlige faldgrub ved den beskrevne opgave er, at når hjemmesiden udvikles, er databasen lille og forespørgsler udføres meget hurtigt. Men efterhånden som hjemmesiden kører på webhostingen, vil databasen vokse, forespørgsler vil udføres langsommere og langsommere, og det kan komme dertil, at på grund af udførelsen af hundrede forespørgsler i en løkke, vil hjemmesiden tage over et minut om at loade!

Ved at anvende en lille smule ekstra effort, kan man gøre sådan, at der kun udføres en enkelt forespørgsel, sådan her:

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

Optimér nedenstående 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); ?>
Dansk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDeutschΕλληνικά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
Vi bruger cookies til webstedets funktion, analyse og personalisering. Behandling af data foregår i henhold til Fortrolighedspolitikken.
accepter alle tilpas afvis