SELECT id FROM mytable WHERE login = 'Jhon' AND password = '123'
列login
具有唯一索引,password
未编入索引。
找到第一个结果后,mysql会停止执行吗?
答案 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'