SQL Execution Order

30.06.2024

cover

SQL execution order

SQL so'rovlar, ma'lumotlarni filtlash uchun 3ta bosqichli operatsiya bajaradi:

  1. Row filtering - ushbu bosqichda FROM, WHERE, GROUP BY va HAVING lar ishga tushadi.
  2. Column filtering - ustunlar odatda SELECT statement bilan filter qilinadi.
  3. Row filtering - DISTINCT, ORDER BY va LIMIT lar ishga tushadi.

Ha, ha, adashmadingiz, row filtering 2 marta amalga oshiriladi. Agar siz yozgan SQL query shunday qilishni talab qilgan bo'lsa yokida DISTINCT, ORDER BY, LIMIT va ...lar siz yozgan queryda mavjud bo'lsa. Keling unda biror query yozib uni tahlil qilib ko'rsak:

SELECT id, full_name, university, gpa
FROM student
WHERE  gpa > 3.00
ORDER BY full_name;

FROM, WHERE execution

WHERE, FROM

Birinchi o'rinda FROM va WHERE ishga tushadi. Ammo nimaga deysizmi? Tasavvur qiling sizga pul berib sanomara olib kel deyishsa nima qilasiz? Kamida qaysi do'kondan? degan savolni berasiz. Xuddi shunday SQL ham avval FROM va WHERE statementlarini ishga tushiradi. Student tabledan kimda gpa 3.00 dan katta bo'lsa o'sha foydalanuvchilarni tanlaydi. Ammo qanday tanlaydi, bu albatta qandaydir loop mexanizmi bilan sodir bo'ladi. Har bir rowni filter qilib oladi, agar gpa > 3.00 bo'lsa ularni oladi, agar unday bo'lmasa keyingi rowlarni tekshiradi.

GROUP BY, HAVING execution

Grouping

GPA 3.00 dan katta bo'lgan talabalarni tanlab oldi, loop tugadi. Agar siz ma'lumotlarni guruhlashni buyurgan bo'lsangiz GROUP BY ishga tushadi. Guruhlangan ma'lumotlar ustida qandaydir shartlaringiz bo'lsa HAVING ishlatasiz WHERE emas. Chunki WHERE guruhlashdan avval bajariladi. Guruhlashdan keyin, ularni shart asosida tanlash, o'chirish va boshqa operatsiyalarni bajarish uchun HAVING clauseni ishlatish kerak kerak.

SELECT execution

Select

SELECTning asosiy vazifasi bizga kerakli columnlarni tanlab berish xolos. Ya'ni siz SELECT deb qaysi columlarni kiritsangiz o'shalarni sizga ko'rsatadi. Keraksiz columlarni tanlash SELECT * FROM ... nega yomonligini bilmoqchi bo'lsangiz ushbu maqolani o'qing.

ORDER BY, LIMIT execution

Demak bizda ko'rsatiladigan columnlar, table va rowlar aniq, endi ularni tartiblash kerak. Agar siz ORDER BY ishlatgan bo'lsangiz, berilgan column bo'yicha SELECT qilingan elementlarni tartiblab chiqadi. Agar tartiblangan elementlarga LIMIT bergan bo'lsangiz demak tartiblab bo'lgandan keyin ularni siz aytgan miqdor bo'yicha sizga taqdim etadi.

Ko'rib turibsizki, SQL queryni qanchalik tez yoki sekin ishlashi, uni bosqichlari ko'pligi va qachon qaysi clauseni ishlatish yaxshi yoki yomonligini bilishga o'zaro bog'liq. Ularni ko'proq o'rganing, amallar bajaring va bizni kuzatishda davom eting!

Telegram: @otabekswe