#db
💣 SQLda GROUP BY qanday ishlaydi?
GROUP BY clause'ni bir so'z bilan tushuntirish qiyin, yoki tushunarsiz bo'ladi - guruhlash. Nimani guruhlash, qanday guruhlash?
Aytaylik bizda film va actor nomli jadvallar hamda ularni birlashtiruvchi film_actor many2many jadvali mavjud. Va biz har bir actor nechtadan filmda qatnashganini bilmoqchimiz. U holda biz film va film_actor jadvallarini join qilib, actorning idsi bo'yicha guruhlashimiz kerak. Agar har bir actor har bir turli reytingdagi filmlarda nechtadan qatnashganini bilmoqchi bo'lsak esa actor idsi hamda rating bo'yicha guruhlaymiz.
Bu bir qarashda secret ko'rinsa ham, aslida db server orqa fonda GROUP BY clauselarini tuple sifatida qabul qilib (masalan (actor_id, rating)), ularni hashlab har bir hashni jadval bo'ylab sanab chiqadi: oddiy hashtable logika! Agar guruhlanayotgan tuple indexlangan bo'lsa, yanada tezroq - bitta yurib chiqishda guruhlashi mumkin.
@voidplog
💣 SQLda GROUP BY qanday ishlaydi?
GROUP BY clause'ni bir so'z bilan tushuntirish qiyin, yoki tushunarsiz bo'ladi - guruhlash. Nimani guruhlash, qanday guruhlash?
Aytaylik bizda film va actor nomli jadvallar hamda ularni birlashtiruvchi film_actor many2many jadvali mavjud. Va biz har bir actor nechtadan filmda qatnashganini bilmoqchimiz. U holda biz film va film_actor jadvallarini join qilib, actorning idsi bo'yicha guruhlashimiz kerak. Agar har bir actor har bir turli reytingdagi filmlarda nechtadan qatnashganini bilmoqchi bo'lsak esa actor idsi hamda rating bo'yicha guruhlaymiz.
Bu bir qarashda secret ko'rinsa ham, aslida db server orqa fonda GROUP BY clauselarini tuple sifatida qabul qilib (masalan (actor_id, rating)), ularni hashlab har bir hashni jadval bo'ylab sanab chiqadi: oddiy hashtable logika! Agar guruhlanayotgan tuple indexlangan bo'lsa, yanada tezroq - bitta yurib chiqishda guruhlashi mumkin.
Indexlar haqida esa tez orada...
@voidplog