我有一个快速且非常简单的问题。
我有一个带有以下 SQL 的表:
CREATE TABLE `users` (
`id` int(20) NOT NULL AUTO_INCREMENT,
`username` char(100) NOT NULL,
`password` char(100) NOT NULL,
PRIMARY KEY (`id`),
KEY `password` (`password`),
KEY `username_2` (`username`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1
当我尝试运行如下 EXPLAIN 语句时:
EXPLAIN SELECT * FROM users WHERE username = 'xx' OR `password` = 'xx'
我收到的结果表明我有一个type = ALL
.
但是,当我尝试运行 EXPLAIN 语句时:
EXPLAIN SELECT * FROM users WHERE username = 'xx' AND `password` = 'xx'
我收到的结果表明我有一个type = REF
.
我想我的问题是为什么第一个查询显示 ALL 而第二个查询显示 REF。
如果有人能对此有所了解,将不胜感激!谢谢!!