索引是什么?为什么要有索引?

索引是什么?为什么要有索引?
索引其实是一种排了序的数据结构,用来加快查找或搜索的操作。假设一个情境,你的业务人员需要在MySQL中查询某一个字段,假设查询语句是SELECT * FROM xxx WHERE Col2 = 22。如果没有建立索引,那么MySQL底层会一行一行的读取Col2字段数据并与你的'22'相对比,相当于是遍历取出Col2字段存的元素,再比较的操作。这样做的时间复杂度是O(N)。在MySQL表中数据过大时,可能这个查询的时间就会变得非常长。这时候我们就可以考虑引入索引来进行优化,假设我们建立的是一个树结构的索引,并将这棵树维护成了平衡树的结构,那么这次我们的查询方式便可以从挨个遍历优化到树结构遍历的方式,时间复杂度也从O(N)变到了O(logN)。当然加索引可以加快你的查询速度,但是与此同时,你的索引树是需要占用磁盘空间的,你的增删操作也是会影响这棵平衡树的,所以要维护这颗平衡树也是会有开销的。

posted @ 2022-07-19 20:25  理塘DJ  阅读(511)  评论(0)    收藏  举报