主键上的WHERE子句总是LIMIT 1吗?

时间:2016-12-07 10:52:12

标签: mysql

只是想知道如果WHERE子句指定了主键(或唯一索引),MySQL是否足够智能来停止搜索,就像你手动指定了LIMIT 1一样?

3 个答案:

答案 0 :(得分:0)

我很确定,因为这是一个简单且非常明显的优化。没什么好听的。

答案 1 :(得分:0)

根据docs

  

只要MySQL向客户端发送了所需的行数,   除非您使用SQL_CALC_FOUND_ROWS

,否则它将中止查询

所以答案是肯定的。

答案 2 :(得分:0)

  

好像您已手动指定LIMIT 1

不要这么认为,指定limiT 1会将返回的行数限制为仅1。而如果你说where col1 = val1,那么将返回与条件匹配的所有行。既然primary key (or unique index)不能有重复项,那么行数将是1个确定性的,因此将返回1行。

不确定两者是如何相同的,而且,不知道为什么要区分这两者。