什么时候用索引呢?怎么创建呢?又是什么时候导致索引失效呢?
2018-10-18 23:12
513 查看
面试不会的,总结下
平常项目中用到的索引很少,什么字段该设置索引呢?
MySQL的创建索引的原则
http://www.cnblogs.com/helloworldlx/p/8651583.html
mysql优化(索引创建规则)
https://blog.csdn.net/u010178308/article/details/80484383
1.经常作为查询条件的列;
2.经常作为排序条件的列;
3.经常作为加入条件的列;
4.经常被查询的列。
不适合设置索引的
1.数据频繁被修改的列,数据被修改,索引需要做相应的修改,消耗资源;
2.区分度不是很高的列,如性别,列值重复性太大,索引效果不是很明显;
3.不是经常被作为查询条件,排序条件,连接条件的列。
索引的注意事项
1.列上进行函数计算将不会使用索引;
2.对于创建索引的列,避免存储NULL,NULL会使索引更加复杂,效率变低,可以使用NOT NULL进行约束;
3.对于模糊查询,如 '%ABC%',将不会使用索引,而不是 'ABC%' 将会使用索引;
4.对于不在,不存在等负向查询将不会使用索引!;
5.每次查询只使用一个索引,如果条件使用了索引,将由不再使用索引;
6.对于其中子句中有多个查询条件的,单列索引的效率不如复合索引,因为查询每次只能使用一个索引;
7.MySQL只对以下操作符才使用索引:<,<=,=,>,> =,之间,在,但是需要注意在的范围值不要太多;
8.union all可以使用索引,但本身效率不是很高,不建议使用;
9.列上进行类型转换的将不会使用索引;
10.老版本的MySQL的对OR条件不使用索引,新版本才支持,不建议使用OR。
阅读更多相关文章推荐
- 什么时候使用指针?什么时候使用引用?什么时候应该按值传递?
- linux创建、进入、修改目录或者文件权限 ‘ACM’时间是什么?怎么修改?
- 【索引失效】什么情况下会引起MySQL索引失效
- MySql中主键约束和主表是什么?外键约束是什么?主表和从表又是什么?怎么创建?
- B树索引+B树索引逻辑结构图+B树索引是怎么搜索数据+创建B树索引
- mysql5.6, mysql5.7什么时候该创建索引?
- 主键查询值,int与字符串类型混用导致索引失效
- 创建表的时候创建索引
- 怎么查看创建索引,分析表和分析索引的进度
- javascript调用函数时什么时候加括号,什么时候不用加括号
- SQL SERVER 中is null 和 is not null 将会导致索引失效吗?
- oracle监听程序,是什么时候,选择的listener.ora?答:是在创建监听服务的时候,而不是启动监听服务的时候
- 什么时候创建索引
- 什么是不可变对象(immutable object)?Java 中怎么创建一个不可变对象?
- react设计中,什么时候该把数据放在组件,什么时候该放在store中
- 数据库中创建视图和索引还有存储过程起什么作用?
- 什么时候创建/不创建索引
- spool命令、创建一个表,创建并且copy表,查看别的用户下的表,rowid行地址 索引的时候使用,表的增删改查,删除表,oracle的回收站
- 数据类型的不匹配可能会导致索引失效