PostgreSQL İndex Çeşitleri Nelerdir?

PostgreSQL İndex Çeşitleri Nelerdir?,

İndex Nedir? İsimli yazımda index nedir genel çalışma prensipleri nedir .Bunlardan bahsetmiştim bu yazımda index çeşitlerinden bahsedeceğim .PostgreSQL B-Tree İndex , HASH, GIN ,GIST ,SP-GIST ,BRIN Index türlerini destekler.  Her index türü için, farklı türdeki sorgulara en uygun olan farklı bir algoritma kullanılır.

PostgreSQL’in index türleri Aşağıdaki gibidir:

B-tree ,
hash ,
GIST,
SP-GIST,
GIN,
BRIN

Bunları kısaca açıklayalım.

 

B-Tree İndex :

 

Belirli bir sıralamaya göre sıralanabilen veriler üzerinde eşitlik ve aralık sorguları için kullanılır. Ayrıca  beetween, is null,is not null ,LIKE gibi sorgularda da bu indexler kullanılır.B-tree indexler sıralama içinde kullanılan indexlerdir. PostgreSQL de index oluşturulurken USING parametresi kullanılmaz ise default olarak b-tree index oluşturulur.

HASH İndex:

 

Hash indexler basit eşitlik karşılaştırmalarında kullanılır. “=”  operatörü  kullanılarak yapılan sorgu hash indexi kullanacaktır.

Dikkat ! : Hash indexler 9.6 ve 9.5 versiyonlarında wall loga yazılmadığı için  servis kapandığında reindex yapılması gerekiyor. Bundan dolayı bu versiyonlarda kullanılması önerilmemektedir.9.6 sürümünden sonra bu problem kaldırılmıştır.

 

 

Örnek kullanımı aşağıdaki gibidir.

 

CREATE INDEX index_adi ON tablo USING HASH (kolon_adi);

GIN INDEX:

GIN index , Generalized İnverted kelimesinin kısaltılmış halidir.

GIN indexler hstore,array,jsonb ve range data tipleri için kullanılır.

GIST İndex:

GIST indexler de tek tür indexleme değil birden fazla indexleme çeşiti bulunmaktadır. GIST indexinin kullanabileceği belirli operatörler indexleme stratejisine bağlı olarak değişir. Gist indexlerinde kullanılan operatörler aşağıda verilmiştir.

<<

&<

&>

>>

<<|

&<|

|&>

|>>

@>

<@

~=

&&

GIST indexlerin kullandığı operatörler ve karşılık gelen data tipleri aşağıdaki gibidir.

 

Operatör İsmi Index Data Tipi İndex Operatörleri Ordering Operatörler
box_ops box && &> &< &<| >> << <<| <@ @> @ |&> |>> ~ ~= <->
circle_ops circle && &> &< &<| >> << <<| <@ @> @ |&> |>> ~ ~= <->
inet_ops inet, cidr && >> >>= > >= <> << <<= < <= =
point_ops point >> >^ << <@ <@ <@ <^ ~= <->
poly_ops polygon && &> &< &<| >> << <<| <@ @> @ |&> |>> ~ ~= <->
range_ops any range type && &> &< >> << <@ -|- = @> @>
tsquery_ops tsquery <@ @>
tsvector_ops tsvector @@

SP-GIST İndex:

 

Çeşitli arama türlerini desteklemektedir. SP-GIST indexler ,such as quadtrees, k-d trees, and radix trees (tries)  gibi disk tabanalı veri yapılarının uygulanmasına izin verir. SP-GIST indexler  two-dimensional points kullananan sorgular destekler.

SP-GIST kullanan indexler aşağıdaki gibidir:

 

<<

>>

~=

<@

<^

>^

 

 

SP-GIST operatör sınıfları(Operator Classes) aşağıdaki gibidir.

 

Operatör İsmi Index Data Tipi İndex Operatörleri Ordering Operatörler
kd_point_ops point << <@ <^ >> >^ ~= <->
quad_point_ops point << <@ <^ >> >^ ~= <->
range_ops any range type && &< &> -|- << <@ = >> @>
box_ops box << &< && &> >> ~= @> <@ &<| <<| |>> |&> <->
poly_ops polygon << &< && &> >> ~= @> <@ &<| <<| |>> |&> <->
text_ops text < <= = > >= ~<=~ ~<~ ~>=~ ~>~ ^@
inet_ops inet, cidr && >> >>= > >= <> << <<= < <= =

 

BRIN INDEX:

 

BRIN indexler , Blok aralıkları index’inin kısaltılmışıdır. Bir tablonun ardışık fiziksel blok aralıklarında tutulan değerler hakkındaki özetleri tutar. Diğer index türlerinden ziyade BRIN indexin kullanabileceği belirli operatörler indeksleme stratejisine bağlı olarak değişir.  BRIN indexler büyük tablolarda B-Tree indexlerin yetersiz kaldığı yerlerde kullanılır.

 

Loading