前提准备:
想要直接为什么索引会命中和索引为什么不会命中,可以看一下 https://blog.csdn.net/GOODNESS_/article/details/88720520, 再看下面就知道了why。emmm。。。。只想记住可以不用看。
为了方便解释,先举个栗子。
CREATE TABLE person(
id INT NOT NULL auto_increment,
name VARCHAR(50) NOT NULL,
age INT NOT NULL,
phone CHAR(11) NOT NULL,
address varchar(100) NOT NULL,
PRIMARY KEY (id),
KEY idx_name_age_phone (name, age, phone)
);
一、全值匹配:
SELECT * FROM person WHERE name = 'goodness' AND age= '24' AND phone = '15501279815';
上面就是全值匹配的方式,参数可不可以换位置?可以的。MySQL有自己的优化器,即使顺序与创建索引的顺序不一致,它会自己优化使用索引的。
二、匹配连续最左的列:
SELECT * FROM person WHERE name = 'goodness' AND phone = '15501279815';