如果我有一个说id
的主键,我会对该键执行简单的查询,例如,
SELECT id FROM myTable WHERE id = X
它会找到一行然后停止查看它是主键,还是告诉mysql使用LIMIT 1
来限制其选择会更好?例如:
SELECT id FROM myTable WHERE id = X LIMIT 1
答案 0 :(得分:7)
是否会找到一行,然后停止查看,因为它是主键
是
这里根本不需要表扫描:它是基于密钥的查找。找到匹配的行,这就是程序的结束。
答案 1 :(得分:4)
没有必要担心这种“优化”。
每个唯一索引合同只会提取一行 - 数据库能够非常快地找到所有(1)行。它能够做到这一点,因为支持索引(或主键)的底层结构支持按值快速搜索。没有涉及表扫描。 (通常使用B树的一种变体,但它可能是基于散列的等等。我认为智能查询优化器也可以根据有效的唯一约束传递额外的提示,但我不知道我对此知之甚少。)