Sobes.tech
Middle

İndeks, sorgunun yürütülmesini nasıl optimize eder?

sobes.tech yapay zeka

AI'dan gelen yanıt

İndeks, genellikle B-ağacı olan, tablo verilerinin küçük bir bölümünü ve ana tablodaki ilgili satırlara bağlantıları tutan bir veri yapısıdır.

Optimizasyon süreci:

  1. Hızlı arama: Tam tablo taraması (full table scan) yerine, veritabanı yönetim sistemi (DBMS) indeksi tarar. İndeks sıralanmış ve belirli sütunlarda hızlı arama için optimize edilmiştir.
  2. Okunan veri miktarını azaltma: İndeks sadece indekslenen sütunları ve göstericileri içerir, bu da diskten okunması gereken veri miktarını önemli ölçüde azaltır, tüm satır veya tüm veri sayfasını okumaya kıyasla.
  3. Sıralama yok: İndeks zaten indekslenen sütunlara göre sıralanmıştır. Bu, sorgu sıralı sonuçlar gerektiriyorsa maliyetli sıralama işleminin yapılmasını engeller.
  4. JOIN işlemlerinin optimizasyonu: Tablo birleştirmelerinde (JOIN) indekslenmiş sütunlar kullanıldığında, DBMS diğer tablodaki ilgili satırları hızlıca bulmak için indeksi kullanabilir, tüm tablo üzerinde iç içe döngüler yapmak yerine.

Örnek:

LastName sütununda indeks olmayan SELECT * FROM Users WHERE LastName = 'Ivanov' sorgusu, DBMS'in Users tablosundaki her satırı okuyup LastName değerini kontrol etmesine neden olur.

LastName üzerinde indeks varsa, DBMS sıralı indeksi tarayarak LastName değeri 'Ivanov' olan kayıtları hızlıca bulur ve ardından indeks göstericilerini kullanarak ana tablodan tam satır verilerini alır.

-- LastName indeksinden faydalanan sorgu örneği
SELECT UserId, FirstName
FROM Users
WHERE LastName = 'Ivanov';
-- Yukarıdaki sorguyu optimize etmek için indeks oluşturma örneği
CREATE INDEX IX_Users_LastName ON Users (LastName);