⊗ppSpOtSQ 80 of 83 menu

PHP да SQL соровларининг истифодасини оптимизациялаш

SQL соровларини маълумотлар базасига ижро этиш жуда секин амалга ошади. Шу сабабдан базага қилинадиган соровлар сонини минималлаштиришга ҳарамат қилиш керак.

Энг кенг тарқалган хатол - бу сикл ичида кўпгина SQL соровларини ижро этиш, ҳолбуки, бирор амални ягона буюруқ билан бажариш имконини берувчи муқобил соровлар мавжуд.

Мисолда кўрамиз.

Бизга маълумотлар базасидаги ёзувларнинг id массиви берилган ва шундай id га эга бўлган ёзувларни ўчириш талаб этилсин.

Кўп ўйламай, бундай "ажойиб" конструкцияни язамиз:

<?php $ids = [1, 2, 3, 4, 5]; // ўчириш учун массив foreach ($ids as $id) { mysqli_query($link, "DELETE FROM users WHERE id=$id"); } ?>

Бу коднинг муаммоси, сикл ичида жуда кўп соровлар ижро этилишида. Масалан, массивада 100 та элемент бўлса - базага 100 та соров жўнатилади!

Тавсифланган вазифанинг алохида қийинчилиги шундаки, веб-сайтни ишлаб чиқиш жараёнида маълумотлар базаси кичик бўлиб, соровлар жуда тез ижро бўлади. Бирок, сайт хостингда ишлаган сари база ҳажми ортади, соровлар секинлаша боради, ва шунга йўл қўйилсаки, сикл ичида юзлаб соровлар ижро этилиши сабаби сайт бир минутдан кўпроқ вактда юклангуча бўлиши мумкин!

Жуда озгина ҳаракат билан, ягона соров ижро этилишини таъминлаш мумкин, мана бу йўл билан:

<?php $ids = [1, 2, 3, 4, 5]; $str = implode(',', $ids); // '1,2,3,4,5' сатрни оламиз mysqli_query($link, "DELETE FROM users WHERE id IN ($str)"); ?>

Қуйидаги кодни оптимизацияланг:

<?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); ?>
Ўзбек
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeOʻzbekTiếng Việt
Биз веб-сайт ишлаши, таҳлил қилиш ва персоналлаштириш учун кукидан фойдаланамиз. Маълумотларни қайта ишлаш Махфийлик сиёсатига мувофиқ амалга оширилади.
ҳаммасини қабул қилиш мослаштириш рад этиш