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