索引的定义:
首先要搞清楚什么是索引:查阅Mysql的官方文档是这样定义索引的:index设计是帮助数据库高效获取数据的一种数据结构(B+Tree)
所以索引的本质其实是一种数据结构.
那么既然定义了索引之后能够帮助我们快速高效率的获取到想要的数据,是不是我们每一个字段都需要创建索引呢.
缺点:
创建索引和维护索引需要时间成本,这个成本随着数据量的增加而加大
每一条索引都要占据物理存储空间,数据量越大,占用空间也越大
索引会降低表的增删改的效率,因为每次增删改索引需要进行动态维护,导致时间变长
优点:
通过创建唯一性索引,可以保证数据库表中行数据的唯一性。
可以大大加快数据的检索速度,这也是创建索引的最主要的原因。
可以加速表和表之间的连接查询。
在使用分组和排序语句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
什么情况下创建索引:
主键自动建立唯一索引
频繁作为查询条件的字段
外键关系字段
参与排序的字段
分组依据的字段
组合查询的字段
不创建索引:
在表中出现次数少的字段
经常增删改的字段
where几乎不参与的字段
过滤性不好的字段