在查询“SELECT 1 ...”中使用“LIMIT 1”是否有意义?

时间:2012-08-02 19:16:37

标签: mysql sql database

问题应该足够明确,但使用而不是

是否有利

SELECT 1 FROM table ...

SELECT 1 FROM table ... LIMIT 1

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
);