前言
在日常和其他程序员大佬吹逼的时候“索引”成了一个高频词汇。
每每提到数据库的时候,总有大佬意气风发的说把数据库索引加上,查询速度就起飞了。
从此对于“索引”总有一个敬畏之心。
日常开发自己也会加一加索引然后再查一下,
有时候速度提高很明显,
有的时候这是心理暗示自己,嗯!应该是快了!(实际并没有)
再后来,自己也学着大佬的模样和口气挥斥方遒
心里却怂得一匹
千万别再细问,我就是个大菜比。
菜比也要进步,今天就好好整理一下索引是怎么一回事。
索引是什么?
对于索引有一个非常好的比喻,数据库中数据是一本书中的内容,而索引就是内容对应的目录。
目录对应索引项以及页码对应内容地址。
除了通俗例子之外,我们换一个角度思考一下,如果没有索引数据库是怎么查数据的?
没有索引的数据库表的查询,其实就是把所有数据对比对一次得到结果。这… 不能忍!!!
那么索引怎么解决全表查询的问题?首先需要说明的是索引是一种数据结构,但是是什么数据结构是由数据库决定的这个我没有细究。
索引是根据表中的某一个列建立的,索引中包括整个表中这个列的所有数据。在查询中以这个索引可以得到对应的索引进而得到所有值,避免了全局搜索,所以有这个这么一个公式count(distinct(index))/count(*)
这个值越小的列越适合建索引。(公式不是原版的,意会意会)<