ข้ามไปที่เนื้อหาหลัก

หลีกเลี่ยงการให้ not in ใน where cause ถ้าสามารถระบุได้ว่าข้อมูลที่ต้องการคืออะไร

 หลีกเลี่ยงการให้ not in ใน where cause ถ้าสามารถระบุได้ว่าข้อมูลที่ต้องการคืออะไร

เช่น custtype มี 1,2,3,4,5 ถ้า Report นี้ไม่ต้องการพิมพ์ข้อมูลของลูกค้า Foreign และ Port
ให้ใช้ where custtype in (‘1’,’3’,’4’)
ไม่ควรใช้ where custtype not in (3,5)
หมาย เหตุ : not in ทำให้ optimizer ไม่สามารถทำงานได้ (ใช้ index ไม่ได้) ถ้าทราบว่า custtype มีค่าเป็นอะไรได้บ้าง การใช้ in จะดีกว่ามาก

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

3. ใช้ EXISTS เร็วกว่า IN แน่นอน

3. ใช้ EXISTS เร็วกว่า IN แน่นอน      ยกตัวอย่างอันนี้ผมใช้ใน Oracle นะครับ     select f1,f2,f3 from my_table where     exists (select 1 from dual where f1=1 or f1=2 or f1=3)      เร็วกว่า     select f1,f2,f3 from my_table where     f1 in (1,2,3)     ฟันธง

UNION กับ UNION ALL ต่างกันอย่างไร

วันนี้เรามาดูว่า UNION กับ UNION ALL ต่างกันอย่างไร แล้วแบบไหนเร็วกว่ากัน UNION นั้น เป็นการ Join กันระหว่าง 2 Table ที่มี Columns เหมือนกันทั้งหมด และจะมีการหาข้อมูลซ้ำ เอามาโชว์แค่ตัวเดียว  UNION ALL นั้น ก็เป็นการ Join เหมือนกับ UNION แต่จะไม่มีการหาข้อมูลซ้ำ ซึ่งก็จะทำให้การ Join กันเร็วขึ้น ในกรณีที่เราไม่สนใจว่าข้อมูลเราจะซ้ำหรือป่าว ผลลัพท์ที่ออกมาก็จะออกมาทั้งหมดจิง ๆ ลองเอาไปประยุกต์ใช้ดูได้นะครับบบบบบ