⊗ppSpOtSQ 80 of 83 menu

Otimização do Uso de Consultas SQL em PHP

A execução de consultas SQL para um banco de dados é uma operação muito lenta. Portanto, é necessário tentar minimizar a quantidade de consultas ao banco.

O erro mais comum é a execução de múltiplas consultas SQL em um loop, quando existem consultas alternativas que permitem realizar o desejado com um único comando.

Vamos ver um exemplo.

Suponha que tenhamos um array com os id de registros no banco de dados e precisemos excluir os registros com esses id.

Sem pensar muito, pode-se escrever uma construção "maravilhosa" como esta:

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

O problema deste código é que múltiplas consultas são executadas no loop. Imagine que o array tenha 100 elementos - serão executadas 100 consultas ao banco!

A armadilha particular da tarefa descrita é que, durante o desenvolvimento do site, o banco de dados é pequeno e as consultas são executadas muito rapidamente. No entanto, com o funcionamento do site no hospedagem, o banco de dados crescerá, as consultas ficarão cada vez mais lentas, e pode chegar a um ponto em que, devido à execução de centenas de consultas em um loop, o site levará mais de um minuto para carregar!

Com um pequeno esforço, podemos fazer com que apenas uma consulta seja executada, assim:

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

Otimize o código abaixo:

<?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); ?>
Português
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nós usamos cookies para o funcionamento do site, análises e personalização. O processamento de dados é realizado de acordo com a Política de Privacidade.
aceitar todas configurar rejeitar