LIMIT 1是否有性能提升?

5

在查询之后添加LIMIT 1会提高性能吗?

如果只有一个可能匹配的条目(主键的WHERE子句),是否会提高性能?

SELECT `x`
FROM `unicorns`
WHERE `id` = 123
LIMIT 1

现在做的操作与之前相同,只不过现在是使用 DELETE 方法:

DELETE FROM `unicorns`
WHERE `id` = 123
LIMIT 1

…和UPDATE

UPDATE `unicorns`
SET `rainbows` = `rainbows` + 1
WHERE `id` = 123
LIMIT 1

附言:列id是主键,因此它是唯一的。

谢谢您的建议!


1
在这种情况下,限制应该没有影响。此外,您不需要在列名周围加引号。 - DwB
5
我认为保持清晰和习惯仍然是很好的。 - Will03uk
2个回答

5

这取决于你是否在列上有索引。

DELETE FROM `unicorns` WHERE `id` = 123 LIMIT 1

如果id是主键,那么这样做就没有意义了,但是

DELETE FROM `unicorns` WHERE `noindexoclumn` = 123 LIMIT 1

这将为您提供性能提升。


0

这将提高性能,因为数据库只会初始化满足查询条件的行。但是在更新时,有什么意义呢?特别是如果您对主键进行精确匹配-您只会开始匹配一行,因此没有必要说“在表中更新此一行,但最多只更新一行”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接