课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
索引是我们在学习服务器开发的时候需要重点学习的一个技术知识点,下面我们就通过案例分析来了解一下,MySQL服务器对索引的应用分析。
1、索引是什么
MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。
可以得到索引的本质:索引是数据结构,索引的目的是提高查询效率,可以类比英语新华字典,根据目录定位词语
如果没有目录呢,就需要从A到Z,去遍历的查找一遍,一个一个找和直接根据目录定位到数据,差的就是天壤之别
2、索引底层数据结构
数据库除了存储数据本身之外,还维护着一个满足特定查找算法的数据结构,这些结构以某种方式指向数据,这样就可以基于这些数据结构实现高效查找算法。这种结构就是索引,MySQL中索引是B+树实现的,每个索引都对应一棵B+树
3、索引的优势
提高数据检索效率,降低数据库IO成本
通过索引列对数据进行排序,降低数据排序成本,降低了CPU消耗
4、索引的劣势
一个索引都为对应一棵B+树,树中每一个节点都是一个数据页,一个页默认会占用16KB的存储空间,所以一个索引也是会占用磁盘空间的。(空间的代价)
索引是对数据的排序,当对表中的数据进行增、删、改操作时,都要维护修改内容涉及到的B+树索引。所以在进行这些操作时需要额外的时间进行一些记录移动,页面分裂、页面回收等操作来维护索引(时间上的代价)
5、哪些情况需要建索引
主键自动建立索引
频繁作为查询的条件的字段应该创建索引
查询中与其他表关联的字段,外键关系建立索引
频繁更新的字段不适合创建索引:因为每次更新不单单是更新了记录还会更新索引,加重IO负担
Where条件里用不到的字段不创建索引
单间/组合索引的选择问题(在高并发下倾向创建组合索引)
查询中排序的字段,若通过索引去访问将大大提高排序的速度
查询中统计或者分组字段
6、哪些不适合建索引
表记录太少
经常增删改的表
数据重复且分布平均的表字段,如果某个数据列包含许多重复的内容,为它建立索引就没有太大的实际效果。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请在707945861群中学习了解。