SQL so'rov optimizatsiyasi — tezlashtirish
Kichik bazada har so’rov tez ishlaydi. Ma’lumot o’sgani sari esa ba’zi so’rovlar sekinlashadi. Optimizatsiya — so’rovni bir xil natija bilan, lekin tezroq ishlatish san’ati. Bu darsda amaliy usullarni ko’ramiz.
1. Indeksdan foydalaning
Eng katta ta’sir — indeks. Tez-tez WHERE yoki
JOIN da ishlatiladigan ustunga indeks qo’ysangiz, baza butun
jadvalni o’qimay, kerakli qatorga to’g’ri o’tadi:
CREATE INDEX idx_buyurtmalar_mijoz ON buyurtmalar(mijoz_id);
O’zingiz ishga tushirib ko’ring — so’rovni tahrirlashingiz ham mumkin:
2. Faqat kerakli ustunni tanlang
SELECT * hamma ustunni tortadi — ko’pincha keraksiz. Faqat kerakli ustunni
so’rang:
-- Sekinroq: hamma ustun
SELECT * FROM mahsulotlar;
-- Tezroq: faqat kerakli ikkitasi
SELECT nom, narx FROM mahsulotlar;
Ustun kam bo’lsa, baza kamroq ma’lumot o’qiydi va uzatadi.
3. WHERE bilan erta filtrlang
Ma’lumotni imkon qadar erta kamaytiring. Keraksiz qatorlarni
WHERE bilan boshidan chiqarib tashlang — shunda keyingi
amallar (guruhlash, tartiblash) kamroq qator ustida ishlaydi:
SELECT nom, narx FROM mahsulotlar
WHERE turi = 'meva';
4. Keraksiz ishdan qoching
- Kerak bo’lmasa
ORDER BYqo’shmang — tartiblash vaqt oladi. DISTINCTni faqat zarur bo’lganda ishlating.- Katta natijani
LIMITbilan cheklang, agar hammasi kerak bo’lmasa.
Amaliy mashq
So’rovni yaxshilang:
SELECT *bilan so’rov yozing;- faqat kerakli ustunlarni tanlab, qayta yozing;
WHEREshartini qo’shib, qatorlarni cheklang;EXPLAIN QUERY PLANbilan ikki variantni solishtiring;LIMITqo’shib, natijani yanada cheklang.
Kichik bazada farq sezilmaydi — bu qoidalar qachon muhim bo’ladi?
Qisqacha xulosa
- Indeks — tez-tez qidiriladigan ustunlarga qo’ying (eng katta ta’sir).
SELECT *o’rniga faqat kerakli ustunlarni tanlang.WHEREbilan ma’lumotni erta kamaytiring.- Keraksiz
ORDER BY,DISTINCTdan qoching;LIMITbilan cheklang. - Avval to’g’ri ishlasin, keyin — zarur bo’lsa — tezlashtiring.
Keyingi darsda EXPLAIN — baza so’rovni qanday bajarayotganini
ko’rsatadigan vositani o’rganamiz.