Junior
Verilənlər bazalarında indekslər hansı hallarda istifadə olunur?
sobes.tech Süni İntellekt
AI-dan cavab
Verilənlər bazalarında indekslər sorğuların icrasının sürətini optimallaşdırmaq üçün istifadə olunur, xüsusən:
- Məlumatların axtarışı:
SELECTəməliyyatlarının sürətini artırmaq, xüsusənWHERE,JOINvəORDER BYşərtləri ilə. İndeks sistemin lazım olan sətirləri daha sürətli tapmasına imkan verir, bütün cədvəli skan etmədən. - Sıralama:
ORDER BYilə sıralamanı sürətləndirmək. Əgər sıralama sütunları indekslidirsə, sistem onları istifadə edə bilər və əlavə sıralama əməliyyatlarından qaça bilər. - Cədvəl birləşdirmələri: İndeksli sütunlar üzərində
JOINəməliyyatlarını sürətləndirmək. İndeks kömək edir ki, əlaqəli cədvəllərdə uyğun sətirləri tez tapılsın. - Məlumatların unikalığı: Sütun dəyərlərinin unikal olmasını təmin etmək (unikal indeks vasitəsilə).
- Birincil açarlar: Birincil açar standart olaraq unikal indeksdir və unikal identifikator vasitəsilə sətirə sürətli giriş üçün istifadə olunur.
- İkincil açarlar: Referensial bütövlüyü təmin etmək və əlaqəli cədvəllər arasında
JOINəməliyyatlarını sürətləndirmək üçün istifadə olunur.
İndeks üçün sütun nümunələri:
- Tez-tez axtarış olunan sütunlar (
WHERE uid = 123). JOINşərtlərində istifadə olunan sütunlar (table1.id = table2.ref_id).- Tez-tez sıralanan sütunlar (
ORDER BY created_at DESC). - Yüksək kardinaliyyətli sütunlar (çox unikal dəyərlər).
İndeksin effektiv olmadığı və ya lazım olmadığı hallar:
- Çox kiçik cədvəllər: Kiçik cədvəllərdə skanlama indekslə axtarışdan daha sürətli və ya ona bərabər ola bilər.
- Aşağı kardinaliyyətli sütunlar: Az sayda unikal dəyərə malik sütunlarda (məsələn, boolean sahə TRUE/FALSE) indeks əhəmiyyətli sürət artışı gətirməyə bilər.
- Tez yazma əməliyyatları (INSERT, UPDATE, DELETE): İndekslar məlumatların dəyişdirilməsi zamanı yenilənməlidir, bu da yazma əməliyyatlarını yavaşlada bilər. Bütün sütunları rastgele indeksləşdirmək tövsiyə edilmir.
WHEREşərtlərində funksiyalar ilə istifadə olunan sütunlar: ƏgərWHEREdaxilində sütuna funksiya tətbiq olunursa (məsələn,WHERE YEAR(date_column) = 2023), normal indeksdate_columnüçün istifadə olunmur. Funksional indekslər lazım ola bilər (əgər SGBD dəstəkləyirsə) və ya sorğu yenidən yazılmalıdır.