Notes on SQL queries

ถ้า WHERE มีหลาย conditions สร้าง index แบบ multi-columnจะให้ผลที่ดีกว่า

select ….. WHERE (o.tolang = ‘th’ AND (o.sentence_en_lower LIKE ‘% chums%’ OR o.sentence_en_lower LIKE ‘%chums%’) AND o.sentence_tolang NOT LIKE ‘%cHFFFF%’) LIMIT 15;

สร้าง index แบบ sentence_en_lower แยกกับ tolang ได้ผลลัพธ์
Planning time: 51.183 ms, Execution time: 293.293 ms   

สร้าง index แบบ multi-column (sentence_en_lower รวมกับ tolang) ได้ผลลัพธ์

Planning time: 0.547 ms   Execution time: 62.052 ms

INDEX ขนาดใหญ่ๆ มากๆ บางที PostgreSQL บางเครื่องไม่ยอมใช้เฉย

อันนี้คือ งง สองเครื่อง set-up ตาราง, index เหมือนกันเด๊ะ แต่บาง query บางเครื่องไม่ยอมใช้ index ใช้เป็น seq scan เฉย ก็คือต้องทดสอบดีๆ ว่ามันทำงานได้อย่างที่เราคิดไว้ EXPLAIN ANALYZE query ดูให้หมด

Leave a comment