MySQL学习之索引
目录 为什么需要索引 索引是什么 索引的本质 索引的目的 索引的副作用 索引的多与少 预读 索引的两大类型 索引的实现方式 b+树索引的分类 索引的种类 索引总结 为什么需要索引 在平常的应用系统中,一般的插入和修改操作很少出现性能方面的问题, 平时我们常遇到的、也是最容易出现问题的还是查询操作,所以对查询语句的优化是非常重要的。 索引可以在不读取整个表的情况下,使数据库应用程序可以更快地查找数据。 索引是什么 索引在MySQL中也称为“键”,是存储引擎快速查找到记录的一种数据结构。 索引的本质 本质就是不断地缩小想要查询数据内容的范围来获取最终我们想要的结果, 同时将随机事件变成顺序事件 索引的目的 加快数据的查询速度 索引的副作用 索引会减慢数据插入和更新的速度 更新一个包含索引的表需要比更新一个没有索引的表花费更多的时间,这是由于索引本身也需要更新 因此,理想的做法是仅仅在常常被搜索的列 ( 以及表 ) 上面创建索引 索引的多与少 不管索引多还是少都会出现性能问题,所以需要找到一个平衡点。 预读 当经历一次IO时,OS不光把当前磁盘地址的数据读入内存, 还把相邻的磁盘地址的数据读入内存缓冲区内。 经历一次IO读入的数据称之为页,具体多少与OS有关 索引的两大类型 索引的两大类型hash与btree hash类型的索引:查询单条快,范围查询慢 btree类型的索引:b+树