ใน 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 แสดงดังรูป

การใช้งานเป็นดังนี้

นี่คือหนึ่งในแนวทางการเลือกใช้งาน Index ให้เหมาะสมกับงาน