Database Index Olayları

Clustered & non-clustered index

Yapısı: Root – Intermediate – Leaf

En belirgin farkı:

  • Clustered Index, veriyi Leaf seviyesinde tutar.
  • Non-clustered Index ise verinin pointerını Leaf seviyesinde tutar.

Clustered Index:

  • Veriler, Index Key’ine göre alfabetik sıralanır.
  • Bir tabloda maximum bir tane olabilir.

Non-Clustered Index:

  • Bir kitabın içindekiler bölümüne benzetilebilir. İçindekilere kısmı taranarak verinin kendisi değil lokasyonu (pointer) bulunur.
  • Bir tabloda birden fazla olabilir.
  • Örn. “1:12313:4″ Veri 12313. sayfa 4. satırda yer aldığını gösterir.

Partial Index:

Tablonun bir kısmına atanır.
Örn. CREATE INDEX table_id_idx on table(id) where ( id > 5 and id < 15 );

Unique Index:

Bitmap Index:
  • Bit arraylerinde tutar.
  • Bitwise Logical operasyonlar yapar.
Dense Index:
  • Bir dosyadır.
  • Ilk satırı işaret eder.
  • Key – Pointer ( Her kayıt için )
Sparse Index:
  • Bir dosyadır.
  • En düşük arama anahtarını işaret eder.
  • Key – Pointer ( Her blok için )
CREATE INDEX customer_email_idx ON customers(email varchar_pattern_ops);  

… LIKE '%…' gibi sorgularda Index Scan yaptırmayı sağlar, yoksa Sequential Scan ile arar. Çoğu sorgu da iyi performans sağlar. PostgreSQL’de clustered index yoktur fakat tablo bir indexi hedef alarak clustered yapılır.

Erkin Çakar

PostgreSQL DBA & Software developer