⊗ppSpOtSQ 80 of 83 menu

SQL հարցումների օպտիմիզացում PHP-ում

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हिन्दीMagyarIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Մենք օգտագործում ենք cookie-ներ կայքի աշխատանքի, վերլուծության և անհատականացման համար։ Տվյալների մշակումը կատարվում է համաձայն Գաղտնիության քաղաքականության։
ընդունել բոլորը կարգավորել մերժել