mysql在找到第一个结果之后是什么,如果在where子句中是唯一的索引列

时间:2013-03-21 12:19:11

标签: mysql

SELECT id FROM mytable WHERE login = 'Jhon' AND password = '123'

login具有唯一索引,password未编入索引。

找到第一个结果后,mysql会停止执行吗?

1 个答案:

答案 0 :(得分:4)

SELECT id FROM mytable WHERE login = 'Jhon' AND password = '123'

没问题,因为你要对UNIQUE CONSTRAINT / INDEX进行过滤,所以没有必要限制。

另外,不要在数据库中存储纯文本密码。

如果login是唯一索引,查询将在找到'Jhon'后停止搜索索引b-tree。因为您有两个条件,您可能希望提示MySQL使用登录索引,以避免(在技术上应该是什么应该)查询计划的错误优化。

SELECT id FROM mytable USE INDEX(login) WHERE login = 'Jhon' AND password = '123'
SELECT id FROM mytable FORCE INDEX(login) WHERE login = 'Jhon' AND password = '123'