⊗ppSpOtSQ 80 of 83 menu

PHPda SQL so'rovlaridan foydalanishni optimallashtirish

Ma'lumotlar bazasiga SQL so'rovlarini bajarish juda sekin amal hisoblanadi. Shuning uchun bazaga qilinadigan so'rovlar sonini minimallashtirishga harakat qilish kerak.

Eng keng tarqalgan xato - bu tsikl ichida ko'plab SQL so'rovlarini bajarish, ayni paytda, xohlagan narsani bitta buyruq bilan bajarishga imkon beradigan muqobil so'rovlar mavjud bo'lsa.

Keling, bir misolni ko'rib chiqaylik.

Faraz qilaylik, bizda ma'lumotlar bazasidagi yozuvlarning id massivi berilgan bo'lsin va biz shu id ga ega yozuvlarni o'chirishimiz kerak.

O'ylamasdan, mana shunday "ajoyib" konstruksiyani yozish mumkin:

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

Ushbu kodning muammosi shundaki, tsikl ichida juda ko'p so'rovlar bajariladi. Tasavvur qiling, massivda 100 ta element bo'lsa - bazaga 100 ta so'rov bajariladi!

Tasvirlangan vazifaning alohida tuzog'i shundaki, saytni ishlab chiqish jarayonida ma'lumotlar bazasi kichik bo'ladi va so'rovlar juda tez bajariladi. Biroq, sayt xostingda ishlagani sari baza o'sib boradi, so'rovlar bajarilishi sekinlashadi, va shunday holat yuzaga kelishi mumkinki, tsikl ichida yuzlab so'rovlarni bajarish tufayli sayt bir daqiqadan ko'proq vaqtda yuklanadi!

Ozgina harakat qilib, atigi bitta so'rov bajarilishiga erishish mumkin, mana shunday:

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

Quyida keltirilgan kodni optimallashtiring:

<?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); ?>
Oʻzbek
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекTiếng Việt
Biz sayt ishlashi, tahlil qilish va shaxsiylashtirish uchun cookie-fayllardan foydalanamiz. Ma'lumotlarni qayta ishlash Maxfiylik siyosatiga muvofiq amalga oshiriladi.
hammasini qabul qilish sozlash rad etish