Oracle NOT EXISTS tuning performanc ให้เร็วกว่าการใช้ NOT IN
ปรกติเวลาเราใช้คำสั่ง select แบบ NOT IN ผลการค้นหาจะช้ามากๆ
แม้ field ที่ใช้จะเป็น INDEX ก็ตาม ยกตัวอย่างเช่น
SELECT * FROM TBL1 T1 WHERE T1.CODE_ID
NOT IN (SELECT T2.CODE_ID FROM TBL2 T2)
คำสั่ง SQL COMMAND แบบนี้ Query ช้ามากๆ แม้ว่า CODE_ID จะเป็น INDEX ของ
ทั้ง 2 table แล้วก็ตาม
แนวทางแก้คือเปลี่ยนมาใช้ NOT EXISTS ตามตัวอย่าง
SELECT * FROM TBL1 T1 WHERE
NOT EXISTS
(SELECT NULL FROM TBL2 T2 WHERE T1.CODE_ID=T2.CODE_ID)
แบบที่สองนี้จะทำงานเร็วมากๆ ถ้า CODE_ID เป็น INDEX ด้วยอ่ะนะ