一、什么是索引
- 索引(Index)是帮助Mysql高效获取数据的数据结构。所以说索引的本质是:数据结构。
- 简单理解就是:排好序的快速查找数据的数据结构。
- 一般来说,索引本身也很大,不可能全部保存在内存中,所以通常以索引文件的形式保存在磁盘上。
二、索引的优势和劣势
1、优势
- 高效的检索数据
- 通过索引列队数据排序
2、劣势
- 更新表(增、删、改)的同时也需要更新索引,降低了更新表的速度。
- 由于索引通常保存在磁盘上,所以占用了额外的空间。
三、什么情况下适合创建索引
- 主键自动建立唯一索引。
- 频繁作为条件查询的字段。
- 查询中与其他表关联的字段,比如外键。
- 单键/组合索引对比,组合索引性价比更高。
- 查询中需要排序的字段。
- 查询中需要统计或分组的字段。
四、什么情况下不适合创建索引
- 表记录太少,比如只有几行,几百行记录。
- 经常增、删、改的表或字段。
- where条件里用不到的字段。
- 过滤性不好的字段。(过滤性不好表示不能唯一定位一条记录或者每次定位记录行数太多,比如性别。而身份证号过滤性就很好。)