是否使用“限制1”加快对主键的查询?

问题描述:

如果我有一个主键说id和我做的关键,例如一个简单的查询,是否使用“限制1”加快对主键的查询?

SELECT id FROM myTable WHERE id = X 

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

SELECT id FROM myTable WHERE id = X LIMIT 1 
+0

你为什么不试试? –

+1

我该如何尝试?它总是只返回1行,我想知道它是否在找到主键后停止全表扫描! – cgweb87

+1

@ cgweb87:请确认我对您的问题所做的修改使其更加清晰,而不是进一步偏离您的意图。 –

是的。这里没有必要进行表扫描:这是基于键的查找。匹配的行被找到,这是过程的结束。

+1

酷感谢.... – cgweb87

+0

使用“限制1”加快对主键的查询吗?是或否,你的答案建议“不”,但是说“是”。 – TarranJones

+0

@TarranJones:我不明白你为什么认为它表示“不”。 –

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

只会提取一行 - 每个唯一的索引合同 - 并且数据库能够很快地找到所有的(1)行。它能够做到这一点是因为支持索引(或主键)的底层结构支持按值快速查找。没有涉及表扫描。 (通常是B树的一个变种,但它可能是基于哈希的,等等,我想智能查询优化器也可以根据唯一的约束传递额外的提示,但我不'对此足够了解。)

+0

谢谢,我的数据库拥有超过500,000行的唯一键,并且只是试图加快性能。 – cgweb87

+0

@ cgweb87您可以随时运行测试。我怀疑“没有变化”,但是如果你发现一个明显的差异,那么1)利润2)编写后续SO问题3)更多利润:) – 2011-12-11 20:23:45

+0

@ cgweb87不要忘记分析查询计划,以及测量挂钟时间。 – 2011-12-11 20:27:43