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