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

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

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

4

1 回答 1

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'
于 2013-03-21T12:37:36.917 回答