mysql 索引优化
二级索引回到主键索引树搜索的过程,我们称为回表。
索引的优化:
1 覆盖索引: 比如主键索引是ID 二级索引 k 是age, select age from T where id = 3 因为二级索引子叶子里面就是主键索引,所以查询数据之后,
可以不用回表,直接去从二级索引里面拿到 age 数据。
2 最左前缀原则:比如一个索引有两个字段A B 索引项出现的原则是,索引定义时,字段出现的顺序。
所以在所以项里面 最左边的 字段是A 是能直接查询: select A from T; 就没必要单独给A 建索引。
最左前缀原则不仅适用于,索引项左边N 个字段,也适用于,索引字符串的左边M个字符。
3 索引下推: 比如 id和age 组成联合索引 查询 id >10 age = 20 的记录, 没有索引下推之前,id >10 查出10 条记录,每条都去查询 一下判断 age 是否 = 20
有了索引下推, 直接把 id 和age 两个字段查询出来,当id > 10 查出来有10条, 可是 age = 10 就能立即判断了 好比是 2 条,再去查询 2次就行,而不是10次。