B站搜索“乐哥聊编程“有本篇文章配套视频 https://www.bilibili.com/video/BV1se4y1t7fx
索引也是一种排好序的数据结构,它记录了原数据的单个列或多个列,通过索引查询,程序不需要查所有记录,只需要先按照索引查到具体的数据,然后在根据索引记录的指针位置,找到对应的原始数据记录。举个例子来说,索引就好比是我们书本的目录,我们通过目录能够快速定位到我们想看指定章节的页数,如果我们不适用索引,会是什么情况呢?我们最大可能就是从头往后方,一页一页确认去找。
因为索引在一定程度上,提高了数据库查询速度 在MySQL中有两种数据访问方式:顺序访问和索引访问。
顺序访问又叫全表扫描,也就是你要查数据时,它是从表的第一行一直按照你的条件进行匹配,直到最后一行,如果数据量比较少的情况下,这是没有问题,但是如果数据量很多,这种查询方式就有点够呛了,前端请求一个数据,直接把网站给干挂了。
索引访问顾名思义就是我们在查询数据是在索引数据结构上执行的,索引数据首先是排好序的,其次他没有保存完整的数据列(聚集索引除外,它的完整记录是放在叶子节点中的) 这种访问方式前提是你已经建好索引,并且你检索的数据列存在索引表中,只有这样你才可以使用索引查询。如果创建了索引之后,当我们对数据进行更新操作时,需要同时更新和维护索引数据。
所以在创建索引时,我们要综合考虑索引优缺点和创建索引的规则(哪些该创建索引,哪些不该创建索引)。不能一味的为了创建索引而创建索引。