本文整理自尚硅谷MySQL数据库教程天花板
文章目录
索引
-
索引的本质就是一种数据结构,简单理解为排好序的可快速查找的数据结构
-
mysql中,索引的数据结构可以为HASH(哈希) 或 BTREE(B+树)
-
我们通常所说的索引,包括聚簇索引(主键索引)、普通索引、唯一索引、组合索引、全文索引等,没有特别说明,默认都是使用B+树结构
-
索引虽然会提高查询效率,但是会降低更新表的效率。比如每次对表进行增删改操作,mysql不仅要更新数据,还要更新对应的索引
索引的数据结构比较
B+树
索引类型
存储索引的方式
回表查询
覆盖索引(避免回表查询)
复合/联合索引设计原则
- 将范围查询的列放在复合索引的最后面
- 列过滤的频繁越高,选择性越好,应该作为复合索引的前导列,适用于等值查找
适合创建索引的11种情况
不适合创建索引的7种情况
- 在where中使用不到的字段,不要设置索引
- 数据量小的表最好不要使用索引
- 有大量重复数据的列上不要建立索引
- 避免对经常更新的表创建过多的索引
- 不建议用无序的值作为索引 例如身份证、UUID(在索引比较时需要转为ASCII,并且插入时可能造成页分裂)、MD5、HASH、无序长字符串等。
- 删除不再使用或者很少使用的索引
- 不要定义冗余或重复的索引