นี่เป็นส่วนเสริมของคำตอบของ Erwin ด้านบน แต่ PostgreSQL รองรับดัชนีหลายประเภท สิ่งเหล่านี้ไม่ได้เกิดร่วมกันโดยเฉพาะ คุณสามารถคิดว่าสิ่งเหล่านี้เป็น:
- วิธีการทำดัชนี (btree, GiST, GIN, ฯลฯ ) เลือกหนึ่งรายการถ้าจำเป็น (btree เป็นค่าเริ่มต้น)
- บางส่วนหรือเต็ม หากบางส่วนใช้ส่วนคำสั่งที่
- โดยตรงหรือใช้งานได้ คุณสามารถจัดทำดัชนีผลลัพธ์ของฟังก์ชัน
- ไม่ซ้ำหรือไม่ซ้ำกัน
สิ่งเหล่านี้สามารถรวมกันได้หลายวิธี สิ่งที่คุณทำที่นี่คือการใช้คุณสมบัติที่เป็นเอกลักษณ์และบางส่วนเพื่อให้ดัชนีบางส่วนที่ไม่ซ้ำกัน (ซึ่งมีประโยชน์อย่างยิ่งเมื่อคุณค้นหา
แต่สมมติว่าคุณต้องการมีดัชนีแบบไม่สนใจขนาดตัวพิมพ์บนฟิลด์เซ็ตย่อยซึ่งชนิดเป็นจริง จากนั้นคุณจะเพิ่มคำจำกัดความของหน้าที่:
CREATE INDEX my_index_name_idx_u ON tbl (lower(subset)) WHERE type;
หมายเหตุนี้สร้างดัชนีที่ไม่ซ้ำกันในการส่งออกของฟังก์ชั่นลดลง () ที่เรียกว่าในแอตทริบิวต์ชุดย่อยที่ประเภทเป็นจริง