⊗ppSpOtSQ 80 of 83 menu

Optimering av användning av SQL-förfrågningar i PHP

Att köra SQL-förfrågningar mot en databas är en mycket långsam operation. Därför är det nödvändigt att försöka minimera antalet förfrågningar till databasen.

Det vanligaste misstaget är att köra många SQL-förfrågningar i en loop, trots att det finns alternativa förfrågningar som gör det möjligt att utföra önskat med ett enda kommando.

Låt oss titta på ett exempel.

Antag att vi har en array med id för poster i databasen och vi behöver ta bort poster med sådana id.

Utan att tänka för länge kan man skriva en sådan "underbar" konstruktion:

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

Problemet med den här koden är att den utför många förfrågningar i loopen. Föreställ dig att det finns 100 element i arrayen - 100 förfrågningar kommer att köras mot databasen!

Den speciella fällan med den beskrivna uppgiften är att när webbplatsen utvecklas är databasen liten och förfrågningarna körs mycket snabbt. Men allteftersom webbplatsen på webbhotellet växer kommer databasen att växa, förfrågningarna kommer att bli långsammare, och det kan komma till den punkt där, på grund av att hundratals förfrågningar körs i en loop, kommer webbplatsen att laddas i mer än en minut!

Med väldigt lite ansträngning kan man göra så att endast en förfrågan körs, så här:

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

Optimera koden nedan:

<?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); ?>
Svenska
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi använder kakor för webbplatsens funktion, analys och personalisering. Behandling av data sker i enlighet med Integritetspolicyn.
acceptera alla anpassa avvisa