นอกจากสิ่งที่ Justin Cave เขียนไว้ตั้งแต่PostgreSQL 9.1คุณสามารถเพิ่มความเร็วในการค้นหาด้วยLIKE
( ~~
) หรือILIKE
( ~~*
) และการจับคู่นิพจน์ทั่วไปขั้นพื้นฐานได้เช่นกัน ( ~
) ใช้คลาสโอเปอเรเตอร์ที่จัดทำโดยโมดูลpg_trgmพร้อมกับดัชนี GIN หรือ GiST เพื่อเร่งความเร็วLIKE
การแสดงออกที่ไม่ได้ยึดไว้ ในการติดตั้งส่วนขยายให้รันหนึ่งครั้งต่อฐานข้อมูล:
CREATE EXTENSION pg_trgm;
สร้างดัชนีของแบบฟอร์ม
CREATE INDEX tbl_col_gin_trgm_idx ON tbl USING gin (col gin_trgm_ops);
หรือ:
CREATE INDEX tbl_col_gist_trgm_idx ON tbl USING gist (col gist_trgm_ops);
การสร้างและการบำรุงรักษาดัชนี GIN หรือ GiSTนั้นมีค่าใช้จ่าย แต่ถ้าตารางของคุณไม่ได้เขียนมากนี่เป็นคุณสมบัติที่ยอดเยี่ยมสำหรับคุณ
Depeszได้เขียนบทความที่ยอดเยี่ยมในบล็อกของเขาเกี่ยวกับคุณสมบัติใหม่
GIN หรือ GiST?
คำพูดทั้งสองจากคู่มือควรมีคำแนะนำ
ตัวเลือกระหว่างการจัดทำดัชนี GiST และ GIN ขึ้นอยู่กับลักษณะการทำงานที่สัมพันธ์กันของ GiST และ GIN ซึ่งจะกล่าวถึงที่อื่น ตามกฎทั่วไปแล้วดัชนี GIN จะค้นหาได้เร็วกว่าดัชนี GiST แต่จะช้ากว่าในการสร้างหรืออัปเดต ดังนั้น GIN จะเหมาะกว่าสำหรับข้อมูลคงที่และ GiST สำหรับข้อมูลที่อัปเดตบ่อยครั้ง
แต่สำหรับประเภทข้อความค้นหา "เพื่อนบ้านที่ใกล้ที่สุด" ด้วยการใช้โอเปอเรเตอร์ระยะทาง <->
:
สิ่งนี้สามารถนำไปใช้อย่างมีประสิทธิภาพโดยดัชนี GiST แต่ไม่สามารถทำได้โดยดัชนี GIN