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