MySQL简单索引介绍
索引说白了就是书的目录。没目录找一句话只能一页页翻,也就是全表扫描;有目录直接翻过去,快很多。
主键天生带索引,不用管。其他字段看你平时在 where 条件里用得最勤的是哪个,就给哪个加索引。建表时用 KEY 顺手写上,老表用 ALTER TABLE 补一个,不想要了就 DROP INDEX 删掉。
-- 建表时顺手加普通索引
CREATE TABLE user (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(30),
age TINYINT,
KEY idx_name (name) -- 给 name 建索引
);
-- 已有表补一个索引
ALTER TABLE user ADD INDEX idx_age (age);
-- 看语句到底走没走索引,看 key 那一列
EXPLAIN SELECT * FROM user WHERE name = 'zhangsan';
别见字段就加。索引占磁盘,insert、update 时还得跟着维护,写多读少的表加一堆只会拖后腿。执行 EXPLAIN 看 key 那列有值就说明用上了,是 NULL 就等于白建。
常见的失效情况:like 写成 '%张三' 前面带百分号、字段上套函数、类型对不上被隐式转换,索引基本都歇菜。
说点什么 0