ใน PostgreSQL database นั้นเตรียม index ประเภทต่าง ๆ ไว้ให้ใช้งาน
สำหรับการเพิ่ม performace ของการ query ข้อมูล
แต่ก็ต้องแลกมากับ การเพิ่มหรือแก้ไขข้อมูลที่ช้าลง
รวมทั้งใช้พื้นที่ disk ในการจัดเก็บที่สูงขึ้น
เลือกใช้งานตาม use case ต่าง ๆ ดังนี้
- B-Tree (default index)
- Hash
- GiST (Generalized Search Tree)
- SP-GiST (Space-Partitioned GiST)
- GIN (Generalized Inverted Index)
- BRIN (Block Range INdexes)
หนึ่งตัวที่น่าสนใจคือ GIN (Generalized Inverted Index)
เนื่องจากชื่อ index มันคุ้น ๆ คือ Inverted Index
ซึ่งใช้งานใน Apache Lucene ที่ Elasticsearch ใช้งานนั่นเอง
มีเป้าหมายเพื่อค้นหาข้อมูลจากคำที่ต้องการ
การทำงานจะไม่มีอะไรมาก
นั่นคือ การแบ่งคำ และ จัดเก็บแต่ละคำว่าอยู่ตรงไหนใน table
ตัวอย่างของ Inverted Index แสดงดังรูป
การใช้งานเป็นดังนี้
[gist id="006b63d87aa156c11cb47885e1661152" file="1.txt"]นี่คือหนึ่งในแนวทางการเลือกใช้งาน Index ให้เหมาะสมกับงาน