『数据库』索引的工作原理

2018-04-24  本文已影响26人  dejunz

数据库索引能够提高数据库的查询效率,那么索引到底是什么。

什么是索引

索引本身这个名字已经能回答这个问题了,索引就是目录,就像通过目录快速查找词典中某个词语一样,索引能够快速定位到要查找数据所在的位置。没有索引,计算机只能一行一行的遍历所有数据,找出符合项,也就是进行全表扫面
MYSQL官方定义:索引是一种数据结构。

实现原理

索引的数据结构主要有BTree索引,哈希索引等几种实现方式,一般使用BTree较多,因为BTree存储数值是有序的。被添加索引的字段,该字段下的值会被存储到对应数据结构中。
有student表:

 CREATE TABLE student(
    name varchar(20),
    age int
 ) ;

如果没有索引,我们使用SELECT name FROM student WHERE name='dingjunzhi';查询数据时,计算机会对对每一条数据进行比较,看是否满足name='dingjunzhi'这个查询条件,找到了满足的数据也不会停止,因为可能会有多条数据满足条件。

CREATE INDEX name_index ON student (name);

当我们添加索引后,name字段下的值会被有序存储到一个BTree结构,BTree的查找效率比全盘扫面高得多。因此再次使用同样SQL语句查询时,会先在索引的数据结构中,找到 "dingjunzhi"对应的值,和该值存储在一起的,还有原表中该项的存储地址,类似("dingjunzhi",0x111),再通过地址找到该条数据。

总结

合理使用索引,能够有效避免全盘扫描,提升检索速度,同时如果对索引使用不当,可能会使一些索引失效,之后文章会分析。


文章内容为个人理解,如有错误欢迎指出。

邮箱:CodingDjz@126.com

上一篇 下一篇

猜你喜欢

热点阅读