Ini adalah tambahan untuk jawaban Erwin di atas, tetapi PostgreSQL mendukung banyak jenis indeks. Ini umumnya tidak saling eksklusif. Anda dapat menganggap ini sebagai:
- Metode indeks (btree, GiST, GIN, dll). Pilih satu, jika perlu (btree menjadi default)
- Sebagian atau penuh. Jika sebagian menggunakan klausa di mana
- Langsung atau fungsional. Anda dapat mengindeks output fungsi.
- Unik atau tidak unik
Ini semua dapat digabungkan dengan berbagai cara. Semua yang Anda lakukan di sini adalah menggunakan fitur unik dan parsial, sehingga memberi Anda sebagian indeks unik (yang sangat berguna saat Anda mengetahuinya.
Tapi misalkan Anda ingin memiliki indeks case sensitif pada bidang bagian di mana jenisnya benar. Maka Anda akan menambahkan definisi fungsional:
CREATE INDEX my_index_name_idx_u ON tbl (lower(subset)) WHERE type;
Catatan ini membuat indeks unik pada output dari fungsi lower () yang dipanggil pada atribut subset di mana tipenya benar.