PostgreSQL Index ทำงานอย่างไร
Index คือโครงสร้างข้อมูลเสริมที่ช่วยให้ database ค้นหาข้อมูลได้เร็วขึ้นโดยไม่ต้อง scan ทุก row ในตาราง แต่ก็มีต้นทุนในแง่ของ storage และ write performance
ประเภท Index หลักใน PostgreSQL คือ B-tree ซึ่งเป็น default และเหมาะกับ equality และ range queries ส่วน Hash Index เหมาะกับ equality เท่านั้นแต่เร็วกว่า B-tree สำหรับกรณีนั้น GIN Index เหมาะกับ full-text search และ array/jsonb และ GiST เหมาะกับ geospatial data
การใช้ EXPLAIN ANALYZE ก่อน query ช่วยให้เห็น query plan ของ PostgreSQL ว่าใช้ Index หรือเปล่า และ cost ของแต่ละ operation เป็นเครื่องมือที่ขาดไม่ได้ในการ optimize
สิ่งที่ต้องระวังคือ Index ที่มากเกินไปจะทำให้ INSERT, UPDATE, DELETE ช้าลงเพราะต้องอัปเดต Index ทุกครั้ง ควรสร้าง Index เฉพาะ column ที่ใช้ใน WHERE clause บ่อยๆ และมี cardinality สูง (มีค่าหลากหลาย)