文章目录
- 1. 索引的声明与使用
-
- 1.1 索引的分类
- 1.2 创建索引
-
- 1.2.1 在创建表时创建索引
- 1.2.2 在已经存在的表上创建索引
- 1.3 删除索引
- 2. MySQL8.0索引新特性
-
- 2.1 支持降序索引
- 2.2 隐藏索引
- 3. 索引的设计原则
-
- 3.1 数据准备
- 3.2 哪些情况适合创建索引
-
- 3.2.1 字段的数值有唯一性的限制
- 3.2.2 频繁作为 WHERE 查询条件的字段
- 3.2.3 经常 GROUP BY 和 ORDER BY 的列
- 3.2.4 UPDATE、DELETE 的 WHERE 条件列
- 3.2.5 DISTINCT 字段需要创建索引
- 3.2.6 多表 JOIN 连接操作时,创建索引注意事项
- 3.2.7 使用列的类型小的创建索引
- 3.2.8 使用字符串前缀创建索引
- 3.2.9 区分度高(散列性高)的列适合作为索引
- 3.2.10 使用最频繁的列放到联合索引的左侧
- 3.2.11 在多个字段都要创建索引的情况下,联合索引优于单值索引
- 3.3 限制索引的数目
- 3.4 哪些情况不适合创建索引
-
- 3.4.1 在where中使用不到的字段,不要设置索引
- 3.4.2 数据量小的表最好不要使用索引
- 3.4.3 有大量重复数据的列上不要建立索引
- 3.4.4 避免对经常更新的表创建过多的索引
- 3.4.5 不建议用无序的值作为索引
- 3.4.6 删除不再使用或者很少使用的索引
- 3.4.7 不要定义冗余或重复的索引
- 3.5 小结
1. 索引的声明与使用
1.1 索引的分类
MySQL的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等。
- 从
功能逻辑
上说,索引主要有 4 种,分别是普通索引、唯一索引、主键索引、全文索引。 - 按照
物理实现方式
,索引可以分为 2 种:聚簇索引和非聚簇索引。 - 按照
作用字段个数
进行划分,分成单列索引和联合索引。