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

cgw*_*b87 12 mysql sql

如果我有一个主键说id,我做一个简单的查询,如,

SELECT id FROM myTable WHERE id = X
Run Code Online (Sandbox Code Playgroud)

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

SELECT id FROM myTable WHERE id = X LIMIT 1
Run Code Online (Sandbox Code Playgroud)

Lig*_*ica 8

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


小智 5

无需担心这种“优化”。

根据唯一索引合约,将仅获取一行,并且数据库能够非常快速地找到所有(1)行。之所以能够做到这一点,是因为支持索引(或主键)的基础结构支持按值快速查找。不涉及表扫描。(通常使用B树的一种变体,但它可能是基于哈希的,等等。我想智能查询优化器也可能能够根据有效的唯一约束传递其他提示,但是我不会对此不够了解。)