⊗ppSpOtSQ 80 of 83 menu

Ottimizzazione dell'utilizzo delle query SQL in PHP

L'esecuzione di query SQL verso il database è un'operazione molto lenta. Pertanto, è necessario cercare di minimizzare il numero di query al database.

L'errore più comune è l'esecuzione di numerose query SQL in un ciclo, quando esistono query alternative che permettono di ottenere lo stesso risultato con un unico comando.

Vediamo un esempio.

Supponiamo di avere un array con gli id dei record nel database e di dover eliminare i record con tali id.

Senza pensarci troppo, si potrebbe scrivere questa "meravigliosa" costruzione:

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

Il problema di questo codice è che nel ciclo vengono eseguite molte query. Immaginate che l'array contenga 100 elementi - verrebbero eseguite 100 query al database!

La trappola particolare del compito descritto è che durante lo sviluppo del sito il database è piccolo e le query vengono eseguite molto velocemente. Tuttavia, man mano che il sito lavora sull'hosting, il database crescerà, le query diventeranno sempre più lente, e potrebbe arrivare al punto che, a causa dell'esecuzione di centinaia di query in un ciclo, il sito impiegherà più di un minuto per caricarsi!

Con pochissimo sforzo, si può fare in modo che venga eseguita una sola query, in questo modo:

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

Ottimizzate il codice qui sotto:

<?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); ?>
Italiano
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesia日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Utilizziamo i cookie per il funzionamento del sito, l'analisi e la personalizzazione. I dati vengono elaborati in conformità con la Politica sulla privacy.
accetta tutto personalizza rifiuta