索引的目标
索引的目标在于进步查询效力,能够类比字典,假如要查“mysql”这个单词,我们一定须要定位到m字母,然后从下往下找到y字母,再找到剩下的sql。假如没有索引,那末你能够须要把一切单词看一遍才找到你想要的,假如我想找到m开首的单词呢?或许ze开首的单词呢?是否是以为假如没有索引,这个事变基本没法完成?
mysql索引道理
除了辞书,生活中随处可见索引的例子,如火车站的车次表、图书的目次等。它们的道理都是一样的,经由过程不停的减少想要取得数据的局限来筛选出终究想要的效果,同时把随机的事宜变成递次的事宜,也就是我们老是经由过程同一种查找体式格局来锁定数据。
数据库也是一样,但明显要庞杂很多,由于不仅面临着等值查询,另有局限查询(>、<、between、in)、隐约查询(like)、并集查询(or)等等。数据库应当挑选怎样的体式格局来应对一切的题目呢?
我们追念字典的例子,能不能把数据分红段,然后分段查询呢?最简朴的假如1000条数据,1到100分红第一段,101到200分红第二段,201到300分红第三段……如许查第250条数据,只需找第三段就能够了,一会儿去除了90%的无效数据。
但假如是1万万的纪录呢,分红几段比较好?稍有算法基本的同学会想到搜刮树,其均匀庞杂度是lgN,具有不错的查询机能。但这里我们疏忽了一个症结的题目,庞杂度模子是基于每次雷同的操纵成原本斟酌的,数据库完成比较庞杂,数据保存在磁盘上,而为了进步机能,每次又能够把部份数据读入内存来盘算,由于我们晓得接见磁盘的本钱大概是接见内存的十万倍摆布,所以简朴的搜刮树难以满足庞杂的运用场景。
以上就是mysql索引道理是什么?的细致内容,更多请关注ki4网别的相干文章!