1、索引概述
-
官方定义:索引(Index)是帮助MySQL高效获取数据的数据结构
-
通俗理解: 索引就相当于图书目录,如果没有目录,找书里面内容,一页一页找,
图书如果有目录,根据目录快速找到内容所在位置,减少翻书次数
2、索引优缺点
- 索引优点:
提高数据检索的效率,降低数据库的IO成本
- 索引缺点:维护索引成本过高、索引占用空间
3、索引分类
- 从功能逻辑上划分,索引主要有 4 种,分别是
普通索引、唯一索引、主键索引、全文索引
。 - 按照作用字段个数划分,索引可以分为
单列索引和联合索引
。 -
按照物理实现方式划分 ,索引可以分为 2 种,分别是
聚簇索引和非聚簇索引
。
4、索引操作语句
CREATE INDEX idx_name ON emp(NAME,age)
5、索引应用场景
哪些情况适合创建索引:
-
频繁作为WHERE查询条件的字段
-
经常GROUP BY 和 ORDER BY的列
-
字段的值有唯一性的限制
-
DISTINCT字段需要创建索引
-
多表JOIN时,对连接字段创建索引
-
使用字符串前缀创建索引
-
例如
一个字段 address varchar(120),我们可以创建索引的长度为(12)个字符,节省索引空间
-
-
区分度高的列(重复的数据少)适合作为索引
-
使用频繁的列,放到联合索引的左侧
哪些情况不要创建索引:
-
WHERE、GROUP BY 、ORDER BY里用不到的字段不创建索引
-
表的数据记录太少
-
有大量重复数据的列上
-
避免对经常增删改的表创建索引
-
不要定义冗余或重复的索引