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.