这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
前言
在没有使用索引之前,我们如果需要查询某张表的数据就要进行全表扫描,这相当于我们遇到不懂的字查字典时,直接从字典的第一页开始一页一页,并且逐行进行查找,直到将整本字典翻完。
很明显,这是一种非常低效的方式,这个问题了的一个解决办法就是使用索引。
什么是索引
索引就相当于字典前的目录,我们可以从目录开始下手,找到那一个字所在的页码,直达那一页再进行查找即可,大大提高了查找的速度。
索引的定义是:在关系型数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。
这个定义乍一眼看还挺难理解,我们只需要将它与前面的例子结合起来看,把它当成一个书本的目录就可以了。
索引的优缺点
该段选自MySQL索引(Index)是什么,为什么要使用索引?
索引有其明显的优势,也有其不可避免的缺点。
优点
索引的优点如下:
- 通过创建唯一索引可以保证数据库表中每一行数据的唯一性。
- 可以给所有的 MySQL 列类型设置索引。
- 可以大大加快数据的查询速度,这是使用索引最主要的原因。
- 在实现数据的参考完整性方面可以加速表与表之间的连接。
- 在使用分组和排序子句进行数据查询时也可以显著减少查询中分组和排序的时间
缺点
增加索引也有许多不利的方面,主要如下:
- 创建和维护索引组要耗费时间,并且随着数据量的增加所耗费的时间也会增加。
- 索引需要占磁盘空间,除了数据表占数据空间以外,每一个索引还要占一定的物理空间。如果有大量的索引,索引文件可能比数据文件更快达到最大文件尺寸。
- 当对表中的数据进行增加、删除和修改的时候,索引也要动态维护,这样就降低了数据的维护速度。