文章目录
全值匹配
- 全值匹配
- 最左前缀原则
- 不在索引列上使用函数,会导致索引失效而转向使用全表扫描
- 范围条件右边的索引列会失效
- 尽量使用覆盖索引
- 使用不等于操作符无法使用索引
- is null,is not null 一般情况下也无法使用索引
- like 以通配符开头的,索引会失效
- 少用 or 或 in,MySQL 不一定使用索引
- 查询范围过大,可能不会使用索引
例如,字段 film_id、actor_id 组成联合索引 idx_film_actor_id,那么在查询条件中使用到联合索引的全部字段,则表示全值匹配。
最左前缀原则使用复合索引的前面字段,但是不能跳过使用后面的字段
不在索引列上使用函数,会导致索引失效而转向使用全表扫描 范围条件右边的索引列会失效 尽量使用覆盖索引 使用不等于操作符无法使用索引 is null,is not null 一般情况下也无法使用索引 like 以通配符开头的,索引会失效mysql> select * from user where name like 'hello%'; -- 会使用索引,索引值的前面5个字符在索引树中是有序的
mysql> select * from user where name like '%hello'; -- 不会使用索引,索引值的后面的若干个字符在索引树中是无序的,所以无法使用索引
解决 like ‘%字符串%’ 索引不被使用的方法:
如果 in (…) 里面的字段不要太多也许会使用索引,or 也是一样;如果指定过多的字段,那么 MySQL 就会扫描索引树多次,所以可能会放弃使用索引
查询范围过大,可能不会使用索引select * from user where age >= 1 and age
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?