PHP-dä SQL soraglaryny ulanmagy optimizasiýa etmek
Bazadaky maglumatlara SQL soraglaryny ýerine ýetirmek örän haýal amaldyr. Şonuň üçin bazadaky soraglaryň sanyny iň aza çenli azaltmaga synanyşmaly.
Iň köp duş gelýän ýalňyşlyk, aýlaw içinde köplenç SQL soraglaryny ýerine ýetirmekdir, şonda-da, islegi bir buýruk bilen ýerine ýetirmäge mümkinçilik berýän alternatiw soraglar bar.
Mysal üsti bilen seredeliň.
Bazadaky maglumatlarda ýazgylaryň id sanawymyz
bar bolsun we şeýle id bilen ýazgylary
pozmaly bolýarys.
Uzak oýlanmasak, aşakdaky "ajayyp" gurluşy ýazyp bileris:
<?php
$ids = [1, 2, 3, 4, 5]; // pozulmaly sanaw
foreach ($ids as $id) {
mysqli_query($link, "DELETE FROM users WHERE id=$id");
}
?>
Bu kodyň meselesi şonda, aýlaw içinde köplenç
soraglar ýerine ýetirilýär. Gözüňiziň öňüne getiriň,
sanawda 100 element bolsa - bazada
100 sorag ýerine ýetiriler!
Beýan edilen meseleň aýratyn kepilligi şonda, sahypa işläp düzülende maglumatlar bazasy kiçi we soraglar örän çalt ýerine ýetirilýär. Emma, sahypanyň hostingde işlemegi bilen bazada maglumatlar köpeler, soraglar haýal- haýal ýerine ýetiriler, we şonda ýetip biler, aýlaw içinde ýüzlerçe soragy ýerine ýetirmegi sebäpli sahypa bir minutdan köp wagt ýüklenip başlar!
Biraz güýç sarp edip, diňe bir sorag ýerine ýetiriler ýaly etmek mümkin, şeýle:
<?php
$ids = [1, 2, 3, 4, 5];
$str = implode(',', $ids); // '1,2,3,4,5' setirini alarys
mysqli_query($link, "DELETE FROM users WHERE id IN ($str)");
?>
Aşakdaky kody optimizasiýa ediň:
<?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);
?>