开发者学堂课程【MySQL 高级应用 - 索引和锁:索引优势劣势】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/598/detail/8592
索引优势劣势
目录:
一、优势
二、劣势
上节课回顾:
索引有排序和查找两大功能。
一、优势
1、提高数据检索的效率,降低数据库的 IO 成本
举例:
类似大学图书馆建书目索引;去有一百万本书的图书馆找书,如果不用索引的情况下,大部分人的运气不会是第一本书就是想找的书的这么好运气,运气背还可能存在快把图书馆翻过来找之前才找到。有索引就会有一个数值参考,会加快查找的效率,少做无用功。
从硬件角度说是 IO
2、降低数据排序的成本,降低了 CPU 的消耗
举例:
通过索引列对数据进行排序;需要找手机号这种字段,查的速度快,也要归功于已经排好序的前提下,比如英文“mysql”这个单词,需要定位到 m 字母,然后从下往下找到y字母,再找到剩下的 sql ,这样不需要每一个字母去查找或者全表扫描。
从硬件角度说是运算 cpu
二、劣势
在图书馆里,管理员不会每本书都有记录,因为会占空间,也就是不能建立高达80个表,只会浪费内存;在淘宝等电商平台会有一个分类的功能,这样的称之为复合索引,再现实使用过程中复合索引更为常见,这样的优化才会提高查找速度。
1、实际上索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录,所以索引列也是要占用空间的虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行 INSERT、UPDATE 和 DELETE;
2、因为更新表时,MySQL 不仅要保存数据,还要保存一下索引文件每次更新添加了索引列的字段,都会调整因为更新所带来的键值变化后的索引信息;
3、索引只是提高效率的一个因素,如果你的 MySQL 有大数据量的表,就需要花时间研究建立最优秀的索引,或优化查询。要根据客户的点击,调整索引优化出来的。变更业务环境等都需要调整索引,以便查询起来更方便。