Download presentation
Presentation is loading. Please wait.
Published byἸεζάβελ Καρράς Modified 5年之前
1
第7章 索引 学习导读 本章主要介绍SQL Server 2000中索引的创建和使用方法。通过本章的学习,应掌握以下内容: 了解索引的概念
第7章 索引 学习导读 本章主要介绍SQL Server 2000中索引的创建和使用方法。通过本章的学习,应掌握以下内容: 了解索引的概念 了解索引的优点 掌握索引的分类 掌握创建、修改和删除索引的方法
2
7.1 索引简介 索引是对数据库表中一个或多个列的值进行排序的结构。索引是一个表,这个表中包含了某个表中一列或者多列值的集合,以及这些值在数据表中的存储位置的物理地址。利用索引可以快速访问数据库表中的特定信息,它可以使数据库程序无须对整个表进行扫描,就可以在其中找到所需数据,因为索引是有序排列的,所以,可以通过高效的有序查找算法(如折半查找等)找到索引项,再根据索引项中记录的物理地址,找到查询结果的存储位置。
3
索引简介 一. 创建索引的原因 索引是为了加速检索而创建的一种存储结构。 索引的优点: 提高查询速度。
提高连接、ORDER BY和GROUP BY执行的速度。 查询优化器依靠索引起作用。在执行查询时,SQL Server会自动对查询进行优化。但是SQL Server的优化是依靠索引来进行的。因此,在建立索引后,SQL Server会依据建立的索引,决定采取哪些索引,使得检索的速度最快。 强制实施行的惟一性。创建惟一索引,可以保证表中的数据不重复。
4
索引简介 二. 建立索引应该考虑的问题 索引的创建可提高查询速度,但它是以占用更多的存储空间为代价的,所以选择在哪些属性上建立索引就至关重要。一个原则就是创建了索引后查询效率应该得到明显的改善。通常可以在主键、外键、作为连接的属性、经常查询的属性上建立索引。
5
索引类型 三. 索引类型 1. 聚集索引和非聚集索引 2. 惟一索引和组合索引
聚集索引--数据库表中记录的物理顺序与索引顺序相同。一个表中只能有一个聚集索引。 非聚集索引--数据库表中记录的物理顺序与索引顺序可以不相同。表中的每一列上都可以有自己的非聚集索引。 2. 惟一索引和组合索引 惟一索引--表示表中任何两笔记录的索引值都不相同。 组合索引--将两个或者多个字段组合起来的索引。
6
创建索引 SQL Server提供了两种方法来创建索引: 直接创建索引。使用CREATE INDEX语句或者企业管理器来直接创建索引。
间接创建索引。使用CREATE TABLE语句创建表时,或者使用ALTER TABLE语句修改表时,如果指定PRIMARY KEY约束或者UNIQUE约束,则SQL Server自动为这些约束创建索引(惟一索引)。
7
通过企业管理器创建索引 通过企业管理器创建索引 操作步骤如下:
(1) 打开企业管理器,并展开相应的服务器组和数据库,在要创建索引的表上(这里选择school数据库的student表作为要创建索引的表。)右击鼠标,将鼠标指向“所有任务”,然后选择“管理索引”命令。
8
通过企业管理器创建索引 (2) 在打开的“管理索引”对话框中对索引进行管理。顶部的“数据库”和“表/视图”文本框用来选择数据库和要创建索引的表,下面的列表框显示了选中表的索引,下部的按钮用来对索引进行编辑、删除等操作。
9
通过企业管理器创建索引 (3) 单击“新建”按钮,打开“新建索引”对话框。这里在“索引名称”文本框中输入索引名称IQ_clsss,选择用于创建索引的列class,“排序次序”选项处于选中状态,表示索引以降序排列。
10
通过企业管理器创建索引 (4) 设置完成后,单击“确定”按钮即可创建一个新的索引。也可以单击“编辑SQL”按钮,出现下列的“编辑Transact-SQL脚本”对话框,单击其中的“执行”按钮则创建一个新的索引。此时,“管理索引”对话框显示有两个索引。
11
通过向导创建索引 通过向导创建索引 操作步骤如下:
(1) 在企业管理器中,展开“数据库”文件夹,执行“工具”菜单中的“向导”命令,打开“选择向导”对话框。然后选择“创建索引向导”。 单击“确定”按钮。
12
通过向导创建索引 (2) 在出现的“欢迎使用创建索引向导”界面上,单击“下一步”按钮。
13
通过向导创建索引 (3)在弹出的对话框的“数据库名称”文本框中,可选择数据库。在“对象名”文本框中,可选择要创建索引的表或者视图。这里选择school数据库的teacher表。选择完成后,单击“下一步”按钮。
14
通过向导创建索引 (4)在打开的当前索引信息对话框中,列出了已有索引的信息,其中PK_teacher是在建立表时创建的(在企业管理器中设置主键约束时自动创建的惟一索引,索引名为PK_表名),其他以“_WA”开头的索引是系统建立的。 单击“下一步”按钮。
15
通过向导创建索引 (5)在出现的“选择列”对话框中,选择要创建索引的列后,单击“下一步”按钮。
16
通过向导创建索引 (6)在打开的“指定索引选项”对话框中,可以设置索引的各个选项,包括聚集索引、惟一性和填充因子等。设置索引属性选项后,单击“下一步”按钮。
17
通过向导创建索引 (7)在“正在完成创建索引向导”对话框中显示了该索引的名称以及创建索引的列。可以通过“上移”和“下移”按钮来设置列的优先级。设置完成后,单击“完成”按钮,系统开始创建索引,完成后弹出一个提示对话框,提示完成新索引的创建。
18
使用SQL语言创建索引 使用SQL语言创建索引 各主要选项的含义: UNIQUE:为表或视图创建惟一索引
格式:CREATE [UNIQUE] [CLUSTERED | NONCLUSTERED] INDEX index_name ON {table | view} (column [ASC | DESC][,…n]) [WITH index_option [,…n]] [ON filegroup] index_option定义为 { PAD_INDEX | FILLFACTOR = fillfactor | IGNORE_DUP_KEY | DROP_EXISTING | STATISTICS_NORECOMPUTE | SORT_IN_TEMPDB } 各主要选项的含义: UNIQUE:为表或视图创建惟一索引 CLUSTERED:创建聚集索引。如果没有指定CLUSTERED,则创建非聚集索引。 NONCLUSTERED:创建非聚集索引。每个表最多可以有249个非聚集索引。
19
使用SQL语言创建索引 index_name:是索引名。 table:包含要创建索引的列的表。 view:要建立索引的视图的名称。
column:应用索引的列。 [ASC | DESC]:确定具体某个索引列的升序(ASC)或降序(DESC)排序方向。默认设置为ASC(升序)。 ON filegroup:在给定的filegroup(文件组)上创建指定的索引。
20
创建索引之例 例1:用SQL语句在school数据库中的teacher表中的tno列上创建一个非聚集索引。
SET NOCOUNT OFF --返回计数 USE school --判断是否存在IDX_tno索引,若存在,则删除之 IF EXISTS(SELECT name FROM sysindexes WHERE name='IDX_tno') DROP INDEX teacher.IDX_tno GO USE school --创建IDX_tno索引 CREATE INDEX IDX_tno ON teacher(tno)
21
创建索引之例 例2:为score表的sno和cno列创建索引,并且强制惟一性。 SET NOCOUNT OFF --返回计数
USE school --判断是否存在IDX_sc索引,若存在,则删除之 IF EXISTS(SELECT name FROM sysindexes WHERE name='IDX_sc') DROP INDEX score.IDX_sc GO USE school --创建IDX_sc索引 CREATE UNIQUE CLUSTERED INDEX IDX_sc ON score(sno,cno)
22
查看和删除索引 使用企业管理器 使用企业管理器查看和删除索引的操作步骤如下:
(1) 打开企业管理器,并展开相应的服务器和数据库,选择要查看或者删除的索引所在的表。 (2) 在上面右击鼠标,将鼠标移向“所有任务”,然后执行“管理索引”命令,打开 “管理索引”对话框。在列表框中选择索引,单击底部的“编辑”按钮。即可打开“编辑现有索引”对话框。在此对话框中查看和编辑索引的选项,完成后单击“确定”按钮即可。 (3) 要删除索引,可在选择索引后,单击“管理索引”对话框底部的“删除”按钮,系统弹出一个确认对话框,单击“确定”按钮即可删除选择的索引。
23
查看和删除索引 使用SQL语言 1.查看索引 可使用存储过程sp_helpindex。
例:EXEC sp_helpindex student 2. 删除索引 格式:DROP INDEX 'table.index | view. index' [,…n] 例:DROP INDEX table1.Idx1
24
练习题 1.什么是索引?索引分为哪两种?各有什么特点? 2.创建索引有什么优、缺点? 3.哪些列上适合创建索引?哪些列上不适合创建索引?
4.如何创建升序和降序索引? 5. 在前面建立的factory数据库上,完成: (1) 在worker表中的“部门号”列上创建一个非聚集索引,若该索引已存在,则删除后重建。 (2) 在salary表的“职工号”和“日期”列创建聚集索引,并且强制惟一性。
Similar presentations