如果我们把数据库与书本的结构对应起来,书的每一页就相当于数据库的每一条记录,而翻书每一页的过程就相当于数据库的扫描,如果你很不幸的把书从第一页翻到了最后一页,那恭喜你,你完成了一个专业的数据库操作:全
如果我们把数据库与书本的结构对应起来,书的每一页就相当于数据库的每一条记录,而翻书每一页的过程就相当于数据库的扫描,如果你很不幸的把书从第一页翻到了最后一页,那恭喜你,你完成了一个专业的数据库操作:全表扫描。
我们来想像一种场景,如果你有一本书,一共有1000页,你想去看499页的内容,你会怎么去找呢?
聪明的你一定是不会从第一页一直翻到499页然后再仔细阅读,而是从大概中间的位置翻开,比如你翻到了508页,然后再向前翻到499页。但问题来了,你如果很不幸的不知道你想找的内容在哪一页,那你该怎么做呢? 我相信你最大可能的方法是,从第一页开始看哪一页有你想要的内容,一直到最后一页(表扫描)。当你翻到最后一页的时候,你就完成了一次书的阅读(全表扫描)。 你的这种方式对应的数据库操作就是进行数据库的全表扫描,找到满足条件的记录,然后返回。 如果每一次你想找内容都要把书翻一遍,我相信你一定会崩溃的,那这个时间我们会选择翻看书的目录(索引),如果找到了我们想要的内容,知道了它在哪一页,我们就可以直接翻到指定的页码去看相关内容了。 对应的数据库操作就是,先从加入的索引当中找到主键索引(页码),然后通过主键索引去寻找真正的内容。
总结一下 : 数据库中加入索引的原因是,当数据库记录过多的时候,加入索引可以先找到相当数据的位置,然后通过位置信息去定点寻找相关记录,从而提高查询效率。