Sobes.tech
Middle

SQL'de hangi tür indeksler vardır?

sobes.tech yapay zeka

AI'dan gelen yanıt

  • B-ağaç (B-tree): En yaygın kullanılan türdür. Çoğu okuma işlemi için uygundur, WHERE, LIKE, ORDER BY dahil.

    CREATE INDEX idx_column ON table_name (column_name);
    
  • Hash (Hash): Kesin eşleşmeler (=) için optimize edilmiştir. Aralık sorguları veya sıralama desteklemez.

    -- Söz dizimi örneği, SGBD'ye göre değişebilir
    CREATE INDEX idx_column ON table_name USING HASH (column_name);
    
  • Tam Metin (Full-Text): Büyük metin alanlarında (VARCHAR, TEXT) arama yapmak için kullanılır.

    -- MySQL'de söz dizimi örneği
    CREATE FULLTEXT INDEX idx_text ON table_name (text_column);
    -- PostgreSQL'de söz dizimi örneği
    CREATE INDEX idx_text ON table_name USING GIN (to_tsvector('russian', text_column));
    
  • Uzamsal (Spatial): Coğrafi verilerin indekslenmesi için kullanılır (noktalar, çizgiler, çokgenler). GEOMETRY veya GEOGRAPHY gibi veri tipleriyle kullanılır.

    -- MySQL'de söz dizimi örneği
    CREATE SPATIAL INDEX idx_geo ON table_name (spatial_column);
    -- PostgreSQL'de söz dizimi örneği
    CREATE INDEX idx_geo ON table_name USING GIST (spatial_column);
    
  • GIN (Genelleştirilmiş Ters İndeks) ve GiST (Genelleştirilmiş Arama Ağacı) PostgreSQL'de: Esnek indeks türleri, tam metin arama, diziler ve JSON gibi çeşitli görevler için uygundur.

  • Kümelenmiş (Clustered): Satırların fiziksel sırasını belirler. Bir tablo yalnızca bir kümelenmiş indeks içerebilir. Genellikle birincil anahtara dayanır.

    -- Birincil anahtar bildirildiğinde, genellikle kümelenmiş indeks oluşturulur
    CREATE TABLE table_name (
        id INT PRIMARY KEY CLUSTERED, -- SQL Server'da
        ...
    );
    
  • Küme dışı (Non-Clustered): Ayrı bir veri yapısıdır ve "sütun değeri (veya sütunlar) + satır göstericisi" çiftlerini depolar. Bir tablo birçok küme dışı indeks içerebilir.

Karşılaştırma:

İndeks Türü Uygulama İşlemler
B-ağaç Genel, çoğu veri tipi =, <, >, <=, >=, BETWEEN, LIKE (başlangıç)
Hash Kesin eşleşme (=) =
Tam Metin Metin araması MATCH AGAINST (MySQL), to_tsquery (PostgreSQL)
Uzamsal Coğrafi veriler Uzamsal fonksiyonlar
Kümelenmiş Satırların fiziksel sıralaması Aralık seçimlerini hızlandırır
Küme dışı İndekslenmiş sütunlarda aramayı hızlandırır =, <, >, <= ve diğerleri