问题应该足够明确,但使用而不是
是否有利 SELECT 1 FROM table ...
SELECT 1 FROM table ... LIMIT 1
?
答案 0 :(得分:14)
假设你的桌子有一百万行...
SELECT 1 FROM table ...
将返回值1
,一百万次......
SELECT 1 FROM table ... LIMIT 1
将返回值1
,一次。
修改强>
您提到您对EXISTS
支票特别感兴趣。 EXISTS
在找到第一行后停止处理(这就是EXISTS
在这种情况下比IN
效率更高的原因),所以考虑到这一点,两者之间没有功能差异这两个问题:
SELECT *
FROM tableA ta
WHERE EXISTS (
SELECT 1
FROM TableB tb
WHERE tb.ID = ta.ID
);
和
SELECT *
FROM tableA ta
WHERE EXISTS (
SELECT 1
FROM TableB tb
WHERE tb.ID = ta.ID
LIMIT 1
);