扫盲 2026.11.05 16:45 15 次浏览 0 条评论

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

行思随记

欢迎来到:行思随记