索引(键(key))是存储引擎用于快速找到记录的一种数据结构,这就好比字典的按字母排序的目录,用处都是快速找到需要的数据,主要是避免了全表扫描,就像字典中不需要从第一页开始找起一样。
innoDB存储引擎中的索引有两种B-Tree索引以及hash索引。B-Tree对索引列是顺序组织存储的,这样对于查找那些一个范围内的数据是很适合的。hash索引是根据键值对的方式来进行检索的,它会对使用了hash索引的列通过hash函数进行计算hash值,并且以计算结果作为键,并且值存储的是该行数据对应的指针。
这里使用的都是B-Tree索引,以后用到hash索引再对本博文进行补充。
在少数据的情况下,对数据库表的列使用索引和不使用索引并没有多大的区别,这并不会占用多长的时间,但是当数据量一大,上千万的数据,查询时间可能会长达十几秒,这对于用户来说往往是不能容忍的。

上面的课程表中有两个索引,都是使用B-Tree作为存储引擎,这个表中还有个教师姓名(忽然感觉表中出现了冗余数据= = ),假设根据姓名来查找该名字教师对应的课程

可以看到进行了全表扫描,但是这个老师只有十多条数据而已,显然这样是不行的,接下来根据这个教师的工号来进行扫描,该教师的工号是建立了索引的。
此时只扫描了14条数据,这个表只有3000多条数据,如果是千万条数据的表查询少量数据,是否使用索引差别是非常巨大的,索引有好处,但是也有坏处,需要进行索引的维护,因为B-Tree索引是按顺序进行排列的,那么对数据增加,更改,删除要维护索引以保证它的有序,使用索引的列越多,维护就越复杂,所以把握好何时使用索引很关键。
浙公网安备 33010602011771号