当前课程知识点:数据库概论 >  第五章 索引 >  5.1 索引 >  Video

返回《数据库概论》慕课在线视频课程列表

Video在线视频

Video

下一节:Video

返回《数据库概论》慕课在线视频列表

Video课程教案、知识点、字幕

各位同学

大家好

我是来自云南大学软件学院的教师

何婧

在接下来的课程中

将由我为大家介绍

绍数据库索引的相关知识

本章的内容主要包括

数据库索引的基础知识

B+树索引

通过前面课程的学习

我们知道数据库不仅仅是数据的集合

数据库提供数据的存储功能

还要提供数据的各种管理功能

为应用需求提供高效的数据访问能力

当一个SQL查询

提交给数据库系统的时候

数据库是怎样执行查询的呢

这时候一个称为查询优化器的

软件模块将对查询进行分析

然后决定一个能一步一步地

访问到所需数据的步骤

这种执行查询的步骤

被人们称为访问计划

或者查询计划

当表中属性列少

数据量少时查询优化器

直接对数据表进行顺序搜索

而当表的列定义很复杂

数据量非常大的时候

查询优化器

就需要通过索引来节省资源了

在本章中

我们主要阐述查询

如何利用数据库索引

来提高访问表中数据的效率。

数据库索引

简称为索引

与以前学习过的驻留内存的数据结构

如二叉树

B树

散列表

有些类似

它的目的

是提高对表中行数据进行查找的效率

数据库索引区别于

驻留内存的数据结构的地方在于

数据库索引包含的数据量

比一次能调入内存的数据量大

因此

数据库索引的数据是存放在磁盘上的

只有被访问的时候

才会被部分地调入内存

这样做的优点是

当计算机关闭的时候

驻留内存的数据将丢失

但是数据库索引中的数据记录

会永久存在

索引是由一系列

存储在磁盘上的索引项组成

索引项有点儿像一个由两列组成的表

第一列是索引键

由行中某些列

通常是一列中的值

串接而成

第二列是行指针

指向数据行所在的磁盘位置

一个索引项对应于索引中的一行

当行发生更新的时候

索引也将做出响应

这意味着如果一行按某一列中的值访问

索引将提供这种访问

如果行中该列的值被修改了

索引也将做相应的修改

索引项存储在磁盘上

通常是按照索引键排序的

这样就可以提高特定SELECT语句的

查询速度

典型的通过索引查询

是给定一个键值或者键值的范围

找到索引项

然后根据行指针找到相应的行

这个结构也类似于

我们平常使用的书籍目录

章节名称就是索引键

页码就是行指针

通过目录来查找书籍内容

当然比从第一页开始顺序查找要快得多

从而也可以看出

数据库索引设计的

最重要的目标

就是要减少读数据

所需的磁盘访问的次数

我们来分析一条简单的查询语句

该查询使用的数据库

是我们之前学习过的CAP数据库

查询目标是从顾客表中

找到居住在Boston

并且打折率在12到14之间的顾客

针对该查询请求

数据库系统

可以有多种不同的查询执行计划

方法一

执行一次全表扫描

对表中所有行进行连续访问

把那些不满足

WHERE子句中的两个条件的行剔除

方法二

假设city上有索引

而discnt上无索引

那么系统将首先查询city列上的索引

通过上面讲述的行指针

来访问所有在Boston的顾客

大大减少需要访问的行数

然后

在挑选出的居住在Boston的顾客中

选出discnt值

在12至14之间的记录就可以了

可以看出

通过数据库索引

能够有效减少查询需要访问的数据行数

从而降低磁盘访问次数

提高查询效率

下面

我们来了解一下

在SQL Server中怎样通过SQL语句

去创建和管理数据库索引

索引是一种由索引键和行指针

组成的二元结构

从创建索引的SQL语法中看出

从创建索引的SQL语法中看出

SQL Server支持UNIQUE

CLUSTERED和NONCLUSTERED

三种类型的索引

唯一索引

是指一个索引键对应一个数据行的索引

例如

在顾客表的顾客编号列上建立的索引

就是一个唯一索引

索引中的一个索引键

仅对应顾客表中的一个顾客记录

不一样的是

如果我们在顾客表的城市列上建立索引

那么这个索引就不能定义为唯一索引

因为一个city值会对应顾客表上的多行

在索引建立之后

索引数据保存在磁盘上

根据索引列的升序或者是降序排列

基本表中的数据修改了

索引表上的数据也会随之立即进行更新

另外

我们看到索引还可以划分为聚簇索引

和非聚簇索引两种不同的类型

聚簇索引是一种要求行的物理存储顺序

和索引键顺序完全相同的索引

一张表只允许建立一个聚簇索引

而非聚簇索引则没有这样的要求

索引的顺序

和基本表数据行的顺序可以不一样

所以

所以

一张表上可以建立多个非聚簇索引

从图中可以看出

如果建立的是聚簇索引

索引键值在42到57之间

对应的数据行也是连续存储的

可以通过磁盘的顺序访问找到数据

如果建立的是非聚簇索引

那么数据行是不连续的

要执行磁盘的随机访问查找数据

例如

对存储电话簿数据的表创建索引

姓名列

比电话列更适合进行簇索引

因为通常按人名查找电话号码

将它们集中存储在一起

更利于加快查找

创建聚簇索引的SQL语句如下

创建聚簇索引的SQL语句如下

该语句将会在S表的

sname列上建立一个聚簇索引

而且S表中的数据行

而且S表中的数据行

将按照sname值的升序存放

这里需要注意的是

聚簇索引的优点是检索速度快

但缺点是建索引的时间长

并且由于在建立聚簇索引时

要改变表中数据行的物理顺序

所以应在其他非聚簇索引

建立之前建立聚簇索引

以免引起SQL Sever 重新构造

非聚簇索引带来额外的开销

同时

与聚簇索引相比

非聚簇索引建立速度快

但比聚簇索引占用空间多

因此

对于实时性要求高的应用

应使用聚簇索引

而对于磁盘空间占用大

而对于磁盘空间占用大

且实时性要求不高的应用

且实时性要求不高的应用

应使用非聚簇索引

好了

现在我们已经了解了

数据库索引的基本概念和使用方法

那么索引本身是怎样组织的呢

采用什么样的数据结构

可以提高索引的查找效率

好了

同学们

我们今天的课程就到这里

下节课再见

数据库概论课程列表:

导论

-数据库概述

--Video

-导论--数据库概述

第一章 数据库基础

-1.1 数据库基础

--Video

-第一章 数据库基础--1.1 数据库基础

第二章 关系运算

-2.1 CAP数据库

--CAP数据库

-第二章 关系运算--2.1 CAP数据库

-2.2 自然关系运算1

-- 自然关系运算1

-第二章 关系运算--2.2 自然关系运算1

-2.3 自然关系运算2

--自然关系运算2

-第二章 关系运算--2.3 自然关系运算2

第三章 结构化查询语言SQL

-3.1 SQL概述

-- SQL概述

-3.1 SQL概述--作业

-3.2 数据定义DDL

--数据定义DDL

-3.2 数据定义DDL--作业

-3.3 SQL数据更新DML

--SQL数据更新DML

-3.3 SQL数据更新DML--作业

-3.4 复杂SQL查询操作1

--复杂SQL查询操作1

-第三章 结构化查询语言SQL--3.4 复杂SQL查询操作1

-3.5 复杂SQL查询操作2

--复杂SQL查询操作2

-第三章 结构化查询语言SQL--3.5 复杂SQL查询操作2

第四章 数据库完整性、视图与安全性

-4.1 数据完整性

--4.1 数据完整性

-4.1 数据完整性--作业

-4.2 完整性约束

--完整性约束

-4.2 完整性约束--作业

-4.3 外键约束

--外键约束

-4.3 外键约束--作业

-4.4 触发器

--触发器

-4.4 触发器--作业

-4.5 视图

--视图

-4.5 视图--作业

-4.6 安全性

--安全性

-4.6 安全性--作业

第五章 索引

-5.1 索引

--Video

-5.2 B+树索引

--Video

第六章 规范化理论

-6.1 函数依赖

--Video

-6.2 Armstrong公理

--Video

-6.3 无损分解

--Video

-6.4 范式举例

--Video

-6.5 三种范式

--Video

-6.5 三种范式--作业

第七章 实体关系模型

-7.1-E-R模型概述

--E-R模型概述

-7.2 E-R模型详解

--Video

-7.3 E-R模型的拓展

--Video

-7.4 E-R模型实例分析

--Video

第八章 事务处理

-8.1 事务的ACID性质介绍

--ACID介绍

-8.1 事务的ACID性质介绍--作业

-8.2 事务经历

--事务经历

-8.2 事务经历--作业

-8.3 可串行化调度和前趋图

--可串行化调度和前趋图

-8.3 可串行化调度和前趋图--作业

-8.4 两阶段封锁

--两段锁协议

-8.4 两阶段封锁--作业

-8.5 隔离级别

--隔离级别

-8.5 隔离级别--作业

-8.6 事务恢复

--事务恢复

-8.6 事务恢复--作业

第九章 数据库应用与开发

-9.1 数据库使用介绍

--数据库使用介绍

-9.2 Java访问数据库

--Java访问数据库

-9.2 Java访问数据库--作业

第十章 其他数据库技术概述

-10.1 数据库新技术概述

--Video

Video笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。