Middle
İndeks sorğunun icrasını necə optimallaşdırır?
sobes.tech Süni İntellekt
AI-dan cavab
İndeks, adətən B- ağacı olan, cədvəlin kiçik bir hissəsini və əsas cədvəldəki müvafiq sətirlərə bağlantıları saxlayan məlumat strukturudur.
Optimizasiya prosesi:
- Tez axtarış: Tam cədvəli skan etmək (full table scan) yerinə, verilənlər bazası idarəetmə sistemi (DBMS) indeksi yoxlayır. İndeks sıralanmış və müəyyən sütunlarda sürətli axtarış üçün optimallaşdırılmışdır.
- Oxunan məlumatların həcmini azaltmaq: İndeks yalnız indekslənmiş sütunları və göstəriciləri ehtiva edir, bu da diskdən oxunması lazım olan məlumatların miqdarını əhəmiyyətli dərəcədə azaldır, bütün sətiri və ya bütün məlumat səhifəsini oxumaqla müqayisədə.
- Sıralama yoxdur: İndeks artıq indekslənmiş sütunlar üzrə sıralanmışdır. Bu, sorğu sıralanmış nəticələr tələb edərsə, bahalı sıralama əməliyyatını həyata keçirməyə ehtiyac qalmır.
- JOIN əməliyyatlarının optimallaşdırılması: Cədvəllərin (JOIN) indekslənmiş sütunlar üzrə birləşdirilməsi zamanı, DBMS digər cədvəldə müvafiq sətirləri tez tapmaq üçün indeksi istifadə edə bilər, bütün cədvəl üzərində iç-içə döngülər yerinə.
Nümunə:
LastName sütununda indeks olmayan SELECT * FROM Users WHERE LastName = 'Ivanov' sorğusu, DBMS-in Users cədvəlindəki hər sətiri oxuyub, LastName dəyərini yoxlamasına səbəb olar.
LastName üzərində indeks ilə, DBMS LastName 'Ivanov' olan qeydləri sürətlə tapır, sıralanmış indeksi yoxlayaraq və sonra indeksdən göstəriciləri istifadə edərək əsas cədvəldən tam sətir məlumatlarını əldə edir.
-- LastName indeksindən istifadə edən sorğu nümunəsi
SELECT UserId, FirstName
FROM Users
WHERE LastName = 'Ivanov';
-- Yuxarıdakı sorğunu optimallaşdırmaq üçün indeks yaratma nümunəsi
CREATE INDEX IX_Users_LastName ON Users (LastName);