ฉันว่าคุณสามารถทำสิ่งเดียวกันในแบบสอบถาม SQL โดยใช้ไม่อยู่ไม่เข้าหรือซ้ายเข้าร่วมซึ่งเป็นโมฆะ ตัวอย่างเช่น:
SELECT a FROM table1 WHERE a NOT IN (SELECT a FROM table2)
SELECT a FROM table1 WHERE NOT EXISTS (SELECT * FROM table2 WHERE table1.a = table2.a)
SELECT a FROM table1 LEFT JOIN table2 ON table1.a = table2.a WHERE table1.a IS NULL
ฉันไม่แน่ใจว่าฉันได้ไวยากรณ์ทั้งหมดถูกต้องหรือไม่ แต่นี่เป็นเทคนิคทั่วไปที่ฉันเคยเห็น ทำไมฉันถึงเลือกใช้อีกอันหนึ่ง? ประสิทธิภาพแตกต่างกัน ... ข้อใดต่อไปนี้ที่เร็วที่สุด / มีประสิทธิภาพมากที่สุด (ถ้ามันขึ้นอยู่กับการนำไปใช้ฉันจะใช้แต่ละอันเมื่อไหร่)
EXISTS
ประโยค คุณอาจจะกลับมา*
, NULL
หรืออะไรก็ตาม: ทั้งหมดนี้จะถูกปรับออกไป
SELECT
FROM
และ*
พิมพ์ง่ายกว่า ใช่SQL
มีความคล้ายคลึงกับภาษาธรรมชาติ แต่มีการแยกวิเคราะห์และดำเนินการโดยเครื่องซึ่งเป็นเครื่องที่ตั้งโปรแกรมไว้ ไม่ใช่ว่ามันจะบุกเข้ามาในห้องเล็ก ๆ ของคุณและตะโกนว่า "หยุดเรียกร้องให้มีการเพิ่มเขตข้อมูลในEXISTS
แบบสอบถามเพราะฉันรู้สึกไม่สบายใจที่จะแยกพวกเขาแล้วโยนมันทิ้ง!" ไม่เป็นไรกับคอมพิวเตอร์จริงๆ