在EXISTS查询中使用LIMIT的任何一点?

shm*_*sel 10 mysql exists query-optimization sql-limit

是否有添加任何性能好处LIMIT到一个EXISTS查询,或将MySQL的应用在自己的极限?

例:

IF EXISTS (
    SELECT 1
      FROM my_table
     LIMIT 1    -- can this improve performance?
)
THEN ... END IF;
Run Code Online (Sandbox Code Playgroud)

Ric*_*mes 14

的目的EXISTS()是为了执行查询只有等到是否有它可以决定任何该表中的匹配行WHERE条款.也就是说,它在逻辑上做同样的事情LIMIT 1. EXISTS可能semi-join在某些圈子中被称为.

底线:不要LIMIT 1在里面使用EXISTS().

附录:正如保罗指出,一个LIMIT 一个OFFSET(或LIMIT m,n)确实具有意义.

  • LIMIT 似乎在 EXISTS 子查询中被忽略。但是,如果您想定义一个 OFFSET,当您想检查是否至少存在 N 行时,您将需要它。 (2认同)