⊗ppSpOtSQ 80 of 83 menu

SQL Sorgularının PHP'de Optimize Edilmesi

Veritabanına SQL sorguları yapmak çok yavaş bir işlemdir. Bu nedenle veritabanına yapılan sorgu sayısını en aza indirmeye çalışmak gerekir.

En yaygın hata, bir döngü içinde çok sayıda SQL sorgusu yapmaktır, halbuki istenileni tek bir komutla yapmaya olanak tanıyan alternatif sorgular mevcuttur.

Bir örnek üzerinden inceleyelim.

Bize veritabanında kayıtlara ait id'lerden oluşan bir dizi verilsin ve bu id'ye sahip kayıtları silmemiz gereksin.

Fazla düşünmeden, şu "harika" yapıyı yazabiliriz:

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

Bu kodun sorunu, döngü içinde çok sayıda sorgu yapılmasıdır. Dizide 100 eleman olacağını düşünün - veritabanına 100 sorgu yapılacak!

Açıklanan görevin özel tuzağı şudur: site geliştirilirken veritabanı küçüktür ve sorgular çok hızlı çalışır. Ancak, site hosting üzerinde çalıştıkça veritabanı büyüyecek, sorgular giderek daha yavaş çalışacak ve bir döngüde yüzlerce sorgu yapıldığı için site bir dakikadan fazla yüklenebilir!

Çok az çaba harcayarak, sadece bir sorgunun yapılmasını şu şekilde sağlayabiliriz:

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

Aşağıdaki kodu optimize edin:

<?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); ?>
Türkçe
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenЎзбекOʻzbekTiếng Việt
Web sitesinin çalışması, analiz ve kişiselleştirme için çerezleri kullanıyoruz. Veri işleme, Gizlilik Politikası'na uygun olarak gerçekleşir.
tümünü kabul et özelleştir reddet