创建索引的原则(原则只是指导参考, 不能死守教条)

哪些场景建议创建索引(6种)

1. select 语句, 频繁作为where条件的字段

最左前缀原则: 最左前缀原则主要使用在联合索引中

如果对条件abc添加索引, 则 abc中a,b,c列可以生效
如果对条件ab 添加索引, 则ab中ab可以生效
如果对条件ac 添加索引, 则只有a生效
如果对bac类似的情况添加索引, 则索引不生效

2. update/ delete 语句的where 条件

3. 需要分组和排序的字段

4. distinct 所使用的字段

5. 字段值有唯一性约束

6. 对于多表查询, 联接字段应创建索引, 且类型务必保持一致

如果不一致可能会进行隐式转换, 从而导致索引无法使用

哪些场景不建议创建索引

1. where子句中里用不到的字段

2. 表的记录非常少(比如只有100条记录)(超过10w条记录时考虑创建索引)

3. 有大量重复数据, 选择行低 (比如性别)

因为索引的选择性越高, 查询效率就越好, 因为可以在查找时过滤到更多的行

4. 频繁更新的字段, 如果创建索引要考虑其索引维护开销, 修改频繁, 查询很少则不建议使用索引

注意:

  1. mysql中可以使用explain关键字来查看sql语句的执行计划。
  2. 索引用来提高查询效率
  3. distinct一般是用来去除查询结果中的重复记录的,而且这个语句在select、insert、delete和update中只可以在select中使用.
  4. 创建索引的三种方式:
方式1:

create index indexName on tableName(fieldName);

方式2:建表时指定索引

create table t_301(
            tid int,
            tname varchar(20),
            gender varchar(1),
            index [indexName] (fieldName)
         );

方式3:

alter table tableName add unique index indexName (fieldName);

猜你喜欢

转载自blog.csdn.net/Beyond_Nothing/article/details/114251375