⊗ppSpOtSQ 80 of 83 menu

Optimalisering av bruk av SQL-spørringer i PHP

Utførelse av SQL-spørringer mot en database er en veldig treg operasjon. Derfor bør man prøve å minimere antall spørringer til databasen.

Den vanligste feilen er å utføre mange SQL-spørringer i en loop, når det finnes alternative spørringer som tillater ønsket handling med én kommando.

La oss se på et eksempel.

Anta at vi har en array med id-er for poster i databasen, og vi må slette poster med disse id-ene.

Uten å tenke lenge, kan man skrive en "fantastisk" konstruksjon som denne:

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

Problemet med denne koden er at den utfører mange spørringer i løkken. Tenk deg at arrayen inneholder 100 elementer - da vil 100 spørringer mot databasen bli utført!

Den spesielle fellen med den beskrevne oppgaven er at når nettsiden utvikles, er databasen liten og spørringene utføres veldig raskt. Men ettersom nettsiden på hostingtjeneren vokser, vil databasen øke i størrelse, spørringene vil utføres saktere og saktere, og det kan komme til et punkt hvor, på grunn av hundrevis av spørringer i en loop, vil nettsiden laste i over ett minutt!

Ved å legge inn litt innsats, kan man gjøre slik at bare én enkelt spørring utføres, slik som dette:

<?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)"); ?>

Optimaliser koden nedenfor:

<?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); ?>
Norsk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruker informasjonskapsler for nettstedets funksjonalitet, analyse og personalisering. Behandling av data foregår i henhold til Personvernerklæringen.
godta alle tilpass avvis