n NOT EXISTS vs. NOT IN vs. LEFT JOIN WHERE IS NULL有什么区别?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (18)

在我看来,您可以在SQL查询中使用NOTISTRESINE、NOTIN或LeftJoinisNULL来执行相同的操作。例如:

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

其中哪一个是最快/最有效的?

提问于
用户回答回答于
用户回答回答于

如果数据库擅长优化查询,那么第一个查询将被转换为接近第三个查询的查询。

扫码关注云+社区