数据库之为什么建立索引

导读:本篇文章讲解 数据库之为什么建立索引,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

假设我们有一个学生成绩信息表 student:

student_name   student_score   ···

    ···            ···         ···

我们要从这个表中查找到名字为xiaoma的学生成绩信息,我们需要用这样的语句:

select * from student
            where student_name = 'xiaoma'

在没有建立索引的情况下:

数据库不得不查询student表的每一行的每一列,并确定学生名称是否为xiaoma,这就意味着数据库不得不检索相当大的数据量才能查找成功。

这就是全盘扫描。

1、什么是索引?

一个索引是存储的表中一个特定列的值得数据结构。索引是在表的列上创建。所以,索引包含一个表中列的值,并且这些值存储在一个数据结构中。

索引是一种数据结构。

2、通常可以作为索引的数据结构有哪些?

(1)B-Tree

(2) 哈希表:哈系索引的工作方式是将列的值作为索引的键值(key),和键值相对应实际的值(value)是指向该表中相应行的指针。

3、索引的工作原理:

因为索引基本上是用来存储列值的数据结构,这使查找这些列值更加迅速。如果索引使用最常用

的数据结构 B-Tree,那么其中的数据是有序的。有序的列值可以极大的提升性能。

假设我们在student_name这一列上建立索引。这样我们在查找student_name=xiaoma,不用再扫描全表。因为索引已经按照字母顺序排序,只需查找所有首字母为“x”的列。

这样的查询次数最大为:

(所有首字母为“x”的索引项被存储在一个内存块中)

查询这个内存块所需的次数 + 遍历内存块中所有项所需的次数。

相比较全盘扫描,速度大大加快。

简单的说,索引就是以表中的某一列作为,列值所在

行的唯一标识,进行排序。方便快速查找。

更加形象的说,索引是整张表的目录。

4、在数据库中,索引存储了些什么?

索引存储了,创建索引的表上那一列的值,以及指向

表中相应行的指针。指针指向行所在的位置。

5、当我们设置索引后,一定会使用索引进行查找吗?

不一定,在执行sql语句:

select * from student
            where student_name = 'xiaoma

数据库会检查在查询的列上是否有索引。假设student_name列上确实创建了索引,数据库会接着检查使用这个索引做查询是否合理。因为有些场景下,使用索引比起全表扫描会更加低效。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由半码博客整理,本文链接:https://www.bmabk.com/index.php/post/10368.html

(0)

相关推荐

半码博客——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!