使用“LIMIT 1”会加快主键上的查询吗?

时间:2011-12-11 20:12:18

标签: mysql sql

如果我有一个说id的主键,我会对该键执行简单的查询,例如,

SELECT id FROM myTable WHERE id = X

它会找到一行然后停止查看它是主键,还是告诉mysql使用LIMIT 1来限制其选择会更好?例如:

SELECT id FROM myTable WHERE id = X LIMIT 1

2 个答案:

答案 0 :(得分:7)

  

是否会找到一行,然后停止查看,因为它是主键

这里根本不需要表扫描:它是基于密钥的查找。找到匹配的行,这就是程序的结束。

答案 1 :(得分:4)

没有必要担心这种“优化”。

每个唯一索引合同只会提取一行 - 数据库能够非常快地找到所有(1)行。它能够做到这一点,因为支持索引(或主键)的底层结构支持按值快速搜索。没有涉及表扫描。 (通常使用B树的一种变体,但它可能是基于散列的等等。我认为智能查询优化器也可以根据有效的唯一约束传递额外的提示,但我不知道我对此知之甚少。)