Sobes.tech
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ən WHERE, JOINORDER 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 BY ilə 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ər WHERE daxilində sütuna funksiya tətbiq olunursa (məsələn, WHERE YEAR(date_column) = 2023), normal indeks date_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.