Logo uz.boatexistence.com

Ajralish unumdorlikka ta'sir qiladimi?

Mundarija:

Ajralish unumdorlikka ta'sir qiladimi?
Ajralish unumdorlikka ta'sir qiladimi?
Anonim

Ha, DISTINCT-dan foydalanish (ba'zan sharhga ko'ra) natijalar buyurtma qilinishiga olib keladi Yuzlab yozuvlarni saralash vaqt talab etadi. Barcha ustunlaringiz boʻyicha GROUP BY ni sinab koʻring, bu baʼzan soʻrovlarni optimallashtiruvchini yanada samaraliroq algoritm tanlashga olib kelishi mumkin (hech boʻlmaganda Oracle bilan ishlashda sezilarli oʻsishni sezdim).

Alohida foydalanish yomonmi?

Xo'sh, "ajralish" so'zidan noto'g'ri foydalanish nafaqat yuqorida muhokama qilinganidek, haqiqiy muammoni yashiradi (jadvallardagi takroriy yozuvlar, on bandda shart yo'qligi), balki so'rovlar samaradorligini pasaytiradi… Bu soʻrovning IO narxini (mantiqiy oʻqish) sezilarli darajada oshiradi.

Ajralish soʻrovni sekinlashtiradimi?

SELECT DISTINCT rejimida juda kam sonli soʻrovlar tezroq ishlashi mumkin va juda kam sonli soʻrovlar SELECT DISTINCT rejimida sekinroq ishlaydi (lekin sezilarli darajada sekin emas), lekin keyingi holatda bu mumkin ilova takroriy holatlarni tekshirishi kerak boʻlishi mumkin, bu esa unumdorlik va murakkablik yukini ilovaga oʻtkazadi.

Alohida yoki GROUP BY dan foydalanish yaxshiroqmi?

Agar Field indekslanmagan boʻlsa, MySQL-da DISTINCT GROUP BY dan biroz tezroq koʻrinadi. DISTINCT faqat takroriy qatorlarni yoʻq qiladi, lekin GROUP BY ularni qoʻshimcha ravishda saralaydi.

Nima uchun biz SQL da alohida ishlatmasligimiz kerak?

Agar muammoni "tuzatish" uchun alohida tanlasangiz, buning evaziga yomon ishlashingiz mumkin. GROUP BY AVG, MAX, MIN, SUM va COUNT kabi jamlangan funksiyalardan foydalanish imkonini beradi. DISTINCT faqat dublikatlarni olib tashlaydi.

Tavsiya: