Bu, Erwin'in yukarıdaki cevabı için tamamlayıcıdır, ancak PostgreSQL, bir dizi dizin türünü destekler. Bunlar genellikle birbirini dışlamaz. Bunları şu şekilde düşünebilirsiniz:
- Endeks yöntemi (btree, GiST, GIN, vb.). Gerekirse birini seçin (btree varsayılan değerdir)
- Kısmi veya dolu. Kısmi bir where cümlesi kullanın
- Doğrudan veya işlevsel. Fonksiyonların çıktısını indeksleyebilirsiniz.
- Benzersiz veya benzersiz olmayan
Bunların hepsi çeşitli şekillerde birleştirilebilir. Burada yaptığınız tek şey, benzersiz ve kısmi özellikleri kullanmaktır, böylece size kısmi benzersiz dizinler verir (bu, öğrenirken son derece yararlıdır).
Ancak , türün doğru olduğu alt küme alanında büyük / küçük harf duyarlı olmayan bir dizin olmasını istediğinizi varsayalım . Sonra işlevsel bir tanım eklersiniz:
CREATE INDEX my_index_name_idx_u ON tbl (lower(subset)) WHERE type;
Bunun, türün true olduğu alt küme özniteliğinde çağrılan lower () işlevinin çıktısında benzersiz bir dizin oluşturduğunu unutmayın .