mysql索引

什么是索引?

  • 索引是在数据库表的字段上添加的,是为了提高查询效率而存在的一种机制。
  • 一张表的一个字段可以添加一个索引,多个字段联合起来也可以添加索引。
  • 索引相当于一本书的目录,是为了缩小扫描范围而存在的一种机制
  • MySQL查询方式: 全表扫描、根据索引检索

如果数据库表中的字段没有添加索引时,MySQL会进行全表扫描,这样效率就比较低,相反添加索引后,扫描范围就缩小了,效率也相对应的提高

mysql索引_第1张图片

索引的实现原理

MySQL原理

  • 在如何数据库当中主键上都会自动添加索引对象,在MySQL中,一个字段上如果有unique(唯一)约束,也会自动创建索引对象。
    在这里插入图片描述

mysql索引_第2张图片

mysql索引_第3张图片

什么时候需要添加索引?

mysql索引_第4张图片

索引的创建和删除

  • 索引创建
    在这里插入图片描述

  • 索引删除
    mysql索引_第5张图片

查看当前索引是否使用了索引进行检索

  • type为ALL,代表使用的全表查询
  • sql语句
    EXPLAIN SELECT * FROM users WHERE username = ‘user’
    mysql索引_第6张图片
  • type为ref 代表使用索引检索,且与全表查询相比,本次只查询了一次就查询到了
    mysql索引_第7张图片

索引的失效

  • 避免在where子句中对字段进行null值判断,会导致引擎放弃索引查询,而使用全表查询
  • 尽量不要使用 select * ,用具体的字段代替
  • 尽量避免在where子句使用or连接条件,可以使用union all
  • 尽量避免在where子句使用in not in,会导致全表查询
  • 避免在模糊查询时,在具体的值前面添加%,也会导致全表查询
  • 不要在where子句中 =的左边进行函数及算术运算

索引的分类

mysql索引_第8张图片

你可能感兴趣的:(随笔记,mysql,数据库,database)