3.6索引(课件)-《数据库应用技术-SQL Server》同步教学(人民邮电版)
2024-03-21
|
29页
|
37人阅读
|
0人下载
普通
内容正文:
关系数据库标准语言SQL
第3章
目录
01
SQL概述
02
数据库的创建
与管理
03
数据表及其操作
04
数据查询
05
视图
06
索引
本章主要内容
结构化查询语言(Structured Query Language,SQL)是关系数据库管理的标准语言,具有数据定义、数据查询、数据操纵和数据控制四个方面的功能。SQL结构简单,功能齐全,是目前广泛应用的关系数据库查询语言。
本章主要介绍SQL Server 2019数据库管理系统各种工具的使用和SQL的使用。
索引
第3章
06
3.6 索引
用户对数据库最基本、最频繁的操作是数据查询。一般情况下,数据库在进行查询操作时需要对整个数据表进行扫描。当表中的记录很多时,扫描数据需要很长的时间,这就造成了系统资源的浪费。为了提高检索数据的能力,数据库引入了索引机制。
3.6.1 索引的概念
如果要在一本书中快速地查找所需的信息,可以利用目录快速地进行查找,而不是一页页地查找。数据库中的索引与书籍中的目录类似,可以让数据库应用程序利用索引快速地查找到所需内容,而不需要扫描整个数据库。在图书中,目录是内容和页码的列表清单。在数据库中,索引就是表中数据和相应存储位置的列表。
索引是以表的列为基础的数据库对象,是为了加速对表中数据行的检索而创建的一种单独的存储结构。当SQL Server执行查询时,查询优化器评估可用于检索数据的每种方法,然后选择最有效的方法。可能采用的方法包括扫描表和扫描一个或多个索引(如果有)。扫描表时,查询优化器读取表中的所有行,并提取满足查询条件的行。扫描表时会有许多磁盘I/O操作,并占用大量资源。查询优化器使用索引时,搜索索引键列,查找到所需查询行的存储位置,然后从该位置提取匹配行。通常,搜索索引比搜索表要快得多,这是因为索引与表不同,一般每行包含的列非常少,且行遵循排序顺序。
3.6.1 索引的概念
索引作为单独的物理数据库结构,与其所依附的数据表是不能割裂开的。索引提供了一种对数据库表记录进行逻辑排序的内部方法。索引一旦建立成功,将由数据库引擎自动维护和管理。当对索引所依附的表进行记录的添加、更新或删除操作时,数据库引擎会及时更新与调整索引的内容,使其与表一致。在数据库系统中建立索引能够极大地改善系统的性能,并且使用索引能够加快数据检索的速度,索引具有以下几个方面的优点。
加速数据检索的速度。索引能够以一列或多列的值为基础,迅速查找表中的数据。
加快表与表之间的连接速度。连接、排序和分组都需要数据检索,在建立好索引后,其数据检索速度会加快,从而加速连接等操作。
在数据检索过程中使用查询优化器,提高系统性能。查询优化器依赖于索引,用于决定到底哪些索引可以使该查询最快。
确保数据记录的唯一性。通过给列创建唯一索引,可以保证表中的数据不重复。
在使用ORDER BY、GROUP BY子句进行数据检索时,利用索引机制,能够显著地减少查询中排序和分组消耗的时间。
3.6.1 索引的概念
索引虽然可以提高查询的速度,但是需要牺牲一定的系统性能。创建索引和维护索引需要耗费时间,对表中数据进行插入、删除和修改操作时,要进行索引维护。另外,索引还占有一定的物理存储空间。因此,对表中的列是否创建索引及如何创建索引,需要进行判断评估。创建索引应考虑的主要因素如下。
一个表如果建有大量索引会影响INSERT、UPDATE和DELETE语句的性能,因为当表中的数据更改时,所有索引都需要进行适当的调整。
避免对经常更新的表建立过多的索引,并且索引应保持较窄,即列要尽可能少。
使用多个索引可以提高更新少而数据量大的表的查询性能。大量索引可以提高不修改数据的表的查询性能,因为查询优化器有更多的索引可供选择,从而可以确定最快的访问方法。
对简单的表进行索引可能不会产生优化效果,因为查询优化器在遍历用于搜索数据的索引时,花费的时间可能比执行表的扫描还长。因此,简单的表的索引可能从来不使用,但却必须在表中的数据更改时进行维护。
对于查询中很少涉及的列或者重复值比较多的列,不要建立索引。
定义主键和外键的列,最好建立索引。
3.6.2 索引的类型
SQL Server 2019中包含两种最基本的索引,即聚集索引和非聚集索引。此外还有唯一索引、包含列索引、视图索引、全文索引、空间索引、筛选索引和XML索引等。
(1)聚集索引
在聚集索引中,索引键值的顺序与数据表中记录的物理顺序相同,即聚集索引决定了数据库表中记录行的存储顺序。由于记录行只能按一个物理顺序存储,因此每个表只能有一个聚集索引。
由于聚集索引的顺序与表中记录的物理存储相同,因此聚集索引适用于范围查找,但聚集索引不适用于频繁更改的列。
(2)非聚集索引
非聚
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。