数据库索引:
-
MySQL官方对索引的定义为:索引是帮助MySQL高效获取数据的数据结构。-----》索引本质是数据结构----》排好序的快速查找的数据结构。
-
优势: 类似大学图书馆建书目索引,提高数据检索的效率,降低了数据库IO成本
通过索引对数据排序,减低数据排序的成本,降低了CPU的消耗 -
劣势:
虽然索引大大的提高了查询速度,同时却会降低更新表的速度,如每次对表进行INSERT,UPDATE和DELETE。
因为更新表时,MYsql不仅要保存数据,还需要保存一下索引文件每次更新添加索引列的字段,都会调整因为更新所带来的键值变化后的索引信息
实践上索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录,所以索引列也是要占用空间的
-
那些情况要创建索引:
1.主键自动建立唯一索引
2.频繁作为查询条件的字段应该创建索引
3.查询中与其它关联的字段,外键关系建立索引
4.单键/组合索引的选择问题,组合索引性价比更高
5.查询中排序的字段,排序字段若通过索引去访问将大大提高排序速度
6.查询统计或者分组字段 -
那些情况不需要创建索引:
1.表记录太少
2.经常增删改的表或者字段
3.where条件里用不到的字段不需要创建索引
4.过滤性不好的不适合索引