Onur Oduncu
Ana SayfaHakkımdaProjelerBlogTeknolojilerİletişim
Onur Oduncu

Uzun ömürlü sistemler tasarlayan ve bilgisini paylaşan bir teknoloji portfolyosu.

© 2026 Onur Oduncu. Tüm hakları saklıdır.

Blog'a Dön

PostgreSQL'de İndeks Stratejileri: Ne Zaman, Nereye?

Yanlış yerde kurulan indeksler performansı düşürebilir. Sorgu planlarını okuyarak doğru indeks kararları vermeyi anlatıyorum.

14 Temmuz 20260 görüntülenme2 dk okuma
~/blog/postgresql-indeks-stratejileri

PostgreSQL'de İndeks Stratejileri: Ne Zaman, Nereye?

İndeksler sorgu performansını artırabildiği gibi, yazma işlemlerini yavaşlatıp disk alanını gereksiz yere tüketebilir. Doğru indeks stratejisi, veri erişim örüntülerini anlamaktan geçiyor.

EXPLAIN ANALYZE ile Başlamak

Herhangi bir indeks eklemeden önce EXPLAIN ANALYZE ile sorgunun gerçek çalışma planını incelemek gerekir. Seq Scan gören bir sorgu her zaman kötü değildir; küçük tablolarda indeks kullanmak PostgreSQL'in tercih ettiği yol olmayabilir.

B-Tree Dışındaki İndeks Türleri

  • GIN: JSONB ve dizi alanlarında arama için
  • GiST: Coğrafi veri ve aralık sorguları için
  • BRIN: Zaman serisi gibi doğal olarak sıralı büyük tablolarda, çok daha az yer kaplayan bir alternatif

Kısmi İndeksler (Partial Index)

Sorgularınız genellikle WHERE published = true gibi bir koşulla sınırlıysa, tüm tablo yerine yalnızca bu alt kümeyi kapsayan bir kısmi indeks oluşturmak, hem indeks boyutunu küçültür hem de sorgu hızını artırır.

CREATE INDEX idx_posts_published ON "Post" (created_at) WHERE published = true;

Çoklu Sütun İndekslerinde Sıralama Önemli

Bir indeksteki sütun sırası, hangi sorguların bu indeksten faydalanabileceğini belirler. En seçici (en çok farklı değer içeren) sütunu genellikle en başa koymak, en iyi performansı sağlar.

Sonuç

İndeks eklemek "daha hızlı olur" varsayımıyla değil, gerçek sorgu örüntülerini ölçerek yapılmalı. Gereksiz indeksler, INSERT ve UPDATE performansını sessizce düşürebilir.