索引是对数据库表中一列或多列的值进行排序的一种数据结构,好比是一本书前面的目录,可以增加对特定信息的查询速度。
一般来说索引本身也很大,不可能全部存储在内存中,因此索引往往是存储在磁盘上的文件中的(可能存储在单独的索引文件中,也可能和数据一起存储在数据文件中)。
1. 索引能极大地减少扫描行数
当我们要在新华字典里查某个字(如「先」)具体含义的时候,通常都会拿起一本新华字典来查,你可以先从头到尾查询每一页是否有「先」这个字,这样做(对应数据库中的全表扫描)确实能找到,但效率无疑是非常低下的,更高效的方法相信大家也都知道,就是在首页的索引里先查找「先」对应的页数,然后直接跳到相应的页面查找,这样查询时间大大减少了,可以是 O(1)。
数据库中的索引也是类似的,通过索引定位到要读取的页,大大减少了需要扫描的行数,能极大地提升效率。简而言之,索引主要有以下几个作用:
即上述所说,索引能极大地减少扫描行数。
索引可以帮助服务器避免排序和临时表。
索引可以将随机 IO 变