【发布时间】:2011-05-26 19:44:50
【问题描述】:
我时不时地看到这些被使用,但它似乎从来没有通过使用 normal 连接或子查询来表现得同样好,甚至更好。
我认为它们具有误导性(与传统的连接和子查询相比,它们可能更难以准确可视化),经常被误解(例如,在 EXISTS/NOT EXISTS 子查询中使用 SELECT * 与 SELECT 1 的行为相同),并且根据我有限的经验,执行速度较慢。
有人可以描述和/或提供一个例子吗?请注意,由于它们的执行和性能可能取决于平台,因此我对它们在 MySQL 中的使用特别感兴趣。
【问题讨论】:
-
我发现此链接将
exists与in进行比较。它适用于 MS-SQL Server,但应该适用相同的原则:weblogs.sqlteam.com/mladenp/archive/2007/05/18/60210.aspx ...另一个链接,这个更多与性能相关:oracle-online-help.blogspot.com/2006/11/in-vs-exist-in-sql.html 另一个... java2s.com/Tutorial/Oracle/0040__Query-Select/… -
去看看。当我只对单个表中的行感兴趣时,我发现使用 EXISTS 和 NOT EXISTS 比创建不需要的 JOIN 更清晰。
-
+1 拉里。确实。并且 JOIN 有一些副作用:stackoverflow.com/questions/1474964/…
标签: sql mysql subquery exists not-exists