12

这个问题应该足够清楚,但是使用它来代替有什么好处吗?

SELECT 1 FROM table ...

SELECT 1 FROM table ... LIMIT 1?

4

1 回答 1

19

假设您的表有一百万行...

SELECT 1 FROM table ...

将返回值1,一百万次...

SELECT 1 FROM table ... LIMIT 1

将返回值1,一次。


编辑

您提到您对EXISTS支票特别感兴趣。 EXISTS在找到第一行后停止处理(这就是为什么EXISTSIN这种情况更有效的原因),因此考虑到这一点,这两个查询之间没有功能差异:

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
);
于 2012-08-02T19:18:49.820 回答