实验六 索引的创建和使用(课件)

合集下载

第6章创建索引、数据库关系PPT课件

第6章创建索引、数据库关系PPT课件
在查询编辑器中有一个模板,可以用来作为创建索引的基础 。在查询编辑器中构建索引之前,我们先看看这个过程, 因为它是创建索引的SQL语法的基础.
6.3 使用SQL Server 2008删除索引
在上一节讨论了三种创建索引的方法,在本节中将学习在 SQL Server 2008中删除索引的方法,和创建索引类似, 删除索引也可以使用SQL Server Management Studio和TSQL的两种方法,本节中将分别对这两种删除索引的方法 进行介绍。
6.4 使用SQL Server 2008维护索引
在完成索引的创建后,下面学习使用SQL Server 2008对索引 进行维护。
6.4.1 显示索引信息
在建立索引后,可以使用下列两种方法对表索引信息进行查 询。
在SQL Server Management Studio的【对象资源管理器】面 板中,使用与创建索引同样的方法,在右击索引对应的分 支菜单项弹出的快捷菜单中选择【属性】命令,即可弹出 该索引对应的信息对话框。
通过Transact-SQL语句来实现,更改索引名称的命令格式如 下: EXEC sp_ rename table_ name.old_index_name, new_index_name
6.3.2 使用T-SQL删除索引
同样,也可以使用Transact-SQL语句删除索引,使用 Transact-SQL语句删除索引的语法格式如下:
DRQP INDEX Table_name.index name[,table_name.index_narne...] 其中: table name:代表索引所在的表名称。 index name:代表要删除的索引的名称。
6.2 使用SQL Server 2008创建索引

索引及创建索引

索引及创建索引

建立索引,就生成了一个索引文件.生成的索引文 件分两种:
1,简单索引文件: <文件名> . IDX 简单索引文件: ——文件名由用户命名;
2,复合索引文件: 复合索引文件:
<文件名> . CDX
——文件名与原表同名.
1,简单索引文件又称单一索引文件. 它仅仅按单一个字段索引排序,而且它只能 按升序排序.
2, 利用命令创建索引
(1) 创建独立索引
( P 100 )
INDEX ON <关键字> <关键字 关键字>
(2) 创建结构复合索引
TO <索引文件名> <索引文件名 索引文件名>
INDEX ON <关键字> TAG <索引标记> <关键字 关键字> <索引标记 索引标记>
Ascending / Descending
5.4 索引的使用
5.4.1 5.4.1. 按索引字段排序 (1)先打开 "表" .
P 103
(2)在系统主菜单下,打开"表"菜单,选 择"属性",进入"工作区属性 工作区属性"窗口. 工作区属性 (3)在"工作区属性"窗口,打开索引顺序 对话框,选择索引字段名,按"确定"按钮,表 中的数据按其索引字段值的大小顺序显示.
如何选择索引的类型 如何选择索引的类型
1.
( P 99) 99)
只对一个表建立索引, 只对一个表建立索引,则按索引字段值唯一性选定
2.
对多个表建立索引时, 对多个表建立索引时,作为一对一或一对多关系的 "一"方表(父表),应使用主索引或候选索引;另 方表(父表),应使用主索引 候选索引; ),应使用主索引或 一方(子表) ,则使用普通索引. 普通索引. 一方(子表) 则使用普通索引

第6章 索引及其应用

第6章  索引及其应用
第6章 索引及其应用
教学提示:索引是以表列为基础的数据库对象,它保存着表中排序的 教学提示:索引是以表列为基础的数据库对象, 教学提示 索引列,并且记录了索引列在数据表中的物理存储位置, 索引列,并且记录了索引列在数据表中的物理存储位置,实现了表中 数据的逻辑排序.数据库中的索引与书籍中的目录类似,在一本书中, 数据的逻辑排序.数据库中的索引与书籍中的目录类似,在一本书中, 利用索引可以快速查找到所需要的信息,无须阅读整本书, 利用索引可以快速查找到所需要的信息,无须阅读整本书,在数据库 索引使数据库程序无须对整个表进行扫描, 中,索引使数据库程序无须对整个表进行扫描,就可以在其中找到所 需要的数据.当创建数据库并优化其性能时, 需要的数据.当创建数据库并优化其性能时,应该为数据查询所使用 表的列创建索引,其主要目的是提高SQL Server系统的性能,加快数 系统的性能, 表的列创建索引,其主要目的是提高 系统的性能 据的查询速度和减少系统的响应时间. 据的查询速度和减少系统的响应时间. 教学目标:通过本章的学习,读者应该掌握索引的概念创建,统计 , 教学目标:通过本章的学习,读者应该掌握索引的概念创建,统计, 教学目标 删除,维护和管理等操作. 删除,维护和管理等操作.
第6章 索引及其应用
删除索引 【例6.2】 在SQL Server Management Studio窗口中删除例 建立的索引 【 窗口中删除例6.1建立的索引 】 窗5 确定删除
第6章 索引及其应用
使用Transact-SQL语句删除索引 使用Transact-SQL语句删除索引的语法格式如下: DROP INDEX Table_name.index_name[,table_name.index_name…] 【例6.3】 使用Transact-SQL语句删除例6.1建立的索引. 在SQL Server Management Studio查询窗口中运行如下命令: USE book GO DROP INDEX book1.IX_book1 GO 在用DROP INDEX命令删除索引时,需要注意如下事项: (1) 不能用DROP INDEX语句删除由PRIMARY KEY约束或UNIQUE约 束创建的索引.要删除这些索引必须先删除PRIMARY KEY约束或 UNIQUE约束. (2) 在删除聚集索引时,表中的所有非聚集索引都将被重建.

第6章使用索引和视图(2)精品PPT课件

第6章使用索引和视图(2)精品PPT课件
ON SC(Sno,Cno)
6.3.2 修改索引
使用企业管理器,打开表设计器,在“索引/键” 卡片中修改索引的定义; 修改索引的过程是首先删除表中准备修改的索 引,然后使用新的索引定义重新创建该索引; 创建和修改聚集索引时,SQL Server要对表的 行进行重组,当表中存储了大量数据时,会产生 很大的开销,可能要花很长时间。
6.4.1 使用聚集索引
用于以下情况: 包含大量非重复值的列; 查询使用下列运算符返回一个范围值的列: BETWEEN、>、>=、<、<=; 返回大型结果集的查询; 经常被使用连接或GROUP BY子句查询访问的 列。
注意:聚集索引不适用于频繁更新的列。
6.4.2 使用非聚集索引
非聚集索引用于以下情况。 包含大量非重复值的列,如姓名列。 不返回大型结果集的查询。 搜索条件(WHERE子句)要求精确匹配的查询 中经常使用的列。 经常需要连接和分组查询语句。
CREAT [UNIQUE][CLUSTERED][NONCLUSTERable|view} (column[ASC|DESC][,…n]) [WITH FILLFACTOR=fillfactor, DROP_EXSITING
]
2、使用T-SQL创建索引
6.5 维 护 索 引
6.5.1 维护统计信息 6.5.2 数据碎片 6.5.3 重建和整理索引
1.删除并重新创建聚集索引 2.DBCC INDEXDEFRAG命令 3.DROP_EXISTING子句
6.6 视图
视图是从一个或几个基表(或视图)导出的表。 视图是虚表; 数据库中只存放视图定义,而不存放视图 对应的数据; 视图一经定义,就可以和基本表一样被查 询、删除。
1.使用企业管理器创建索引 2.使用T-SQL创建索引

索引ppt课件.ppt

索引ppt课件.ppt

索引的优缺点

优点
加快访问速度
加强行的唯一性

缺点
带索引的表在数据库中需要更多的存储空间 操纵数据的命令需要更长的处理时间,因为它
们需要对索引进行更新
创建索引的指导原则

请按照下列标准选择建立索引的列。
该列用于频繁搜索
该列用于对数据进行排序

请不要使用下面的列创建索引:
列中仅包含几个不同的值。 表中仅包含几行。为小型表创建索引不太划
填充因子

创建索引时,可以指定一个填充因子,以便在索引的每个 叶级页上留出额外的间隙和保留一定百分比的空间,供将 来表的数据存储容量进行扩充和减少页拆分的可能性。填 充因子的值是从 0 到 100 的百分比数值,指定在创 建索引后对数据页的填充比例。值为 100 时表示页将 填满,所留出的存储空间量最小。只有当不会对数据进行 更改时(例如,在只读表中)才会使用此设置。值越小则 数据页上的空闲空间越大,这样可以减少在索引增长过程 中对数据页进行拆分的需要,但需要更多的存储空间。当 表中数据会发生更改时,这种设唯一索引不允许两行具有相同的索引 值 主键索引:为表定义一个主键将自动创建主键索 引,主键索引是唯一索引的特殊类型。主键索引 要求主键中的每个值是唯一的,并且不能为空 聚集索引(Clustered):表中各行的物理顺序与键 值的逻辑(索引)顺序相同,每个表只能有一个 非聚集索引(Non-clustered):非聚集索引指定表 的逻辑顺序。数据存储在一个位置,索引存储在 另一个位置,索引中包含指向数据存储位置的指 针。可以有多个,小于249个
索引
什么是索引

汉语字典中的汉字按页存放,一般都有汉语拼音目 录(索引)、偏旁部首目录等 我们可以根据拼音或偏旁部首,快速查找某个字词

实验 索引的创建与管理

实验 索引的创建与管理

实验索引的创建与管理2016-3-29实验目的1、理解索引的概念与类型。

2、掌握创建、更改、删除索引的方法。

3、掌握维护索引的方法。

实验内容及步骤一、实验内容:在SQL Server 2000中,使用企业管理器和T-SQL语言创建索引,以提高数据库的检索效率,加速表与表之间的连接,减少分组与排序的时间。

二、实验步骤:1.使用企业管理器创建、管理索引(1)创建索引为student表创建一个以student_id为索引关键字的惟一聚簇索引。

1)运行SQL Server企业管理器。

2)展开服务器、数据库。

3)用鼠标右键单击要创建索引的表,在系统弹出的快捷菜单中,分别单击“所有任务”、“管理索引”,系统将弹出管理索引窗口。

该窗口显示了该表目前存在的索引。

4)在该对话窗口中可以选择数据库和表并为之创建索引,另外,也可以编辑、删除索。

5)在“数据库”和“表/视图”下拉列表框中分别选择要创建索引所在的数据库和表,然后,单击“新建”按钮,系统将打开新建索引窗口。

6)在索引名称文本框中输入新索引的名称student,并在字段列表中选择要创建索引的关键字student_id,单击索引选项复选框“聚簇索引”、“惟一值”。

7)设置完成后,单击“确定”按钮,索引创建完成。

(2)重命名索引将索引文件student重新命名为studentl。

1)进入企业管理器,分别展开“服务器”、“数据库”、“表”。

2)用鼠标右键单击要创建索引的表,选择“设计表”,系统将弹出“设计表”窗口。

3)在“设计表”窗口中按鼠标右键,在其出现的快捷菜单上选择“索引/键“,系统将弹出索引属性窗口。

4)在“索引名”文本输入框内输入新的索引名称。

如需改变索引关键字、填充因子等选项,可在相应的下拉框或文本框中重新输入。

5)更改完成后,单击“关闭”按钮即可。

(3)删除索引将索引文件studentl删除。

1)运行SQLServer企业管理器。

2)展开服务器、数据库。

第6章 索引的创建与使用概论

第6章 索引的创建与使用概论
建立唯一索引的字段最好不允许为空(NOT NULL)
2020/11/20
9
SQL Server2005
复合索引:在对数据表创建索引时,有时创建基 于单个字段的索引不能满足查询要求,这时需要 对表创建多个字段的索引,这样的索引称为复合 索引。在SQL SERVER系统中一个复合索引中 包含的字段最多是16个,并且要求这些字段都属 于一个表。
在查询中几乎不涉及的列。 很少有唯一值的列(即包含太多重复值得列,如性别字段)。 数据类型为text、ntext或image的列。 只有较少行数的表没有必要创建索引。 当写的性能比查询更重要时,应少建或不建索引。
2020/11/20
5
SQL Server2005
5.1.2 索引的分类
SQL Server 2005 中常用的索引类型 :
2020/11/20
7
SQL Server数据行的物理存 储结构无关,因此在创建非聚集索引时不会改变 数据表中记录的物理存储顺序。每个表的非聚集 索引最多为249个。
下列情况时可以考虑创建非聚集索引:
使用 JOIN 或 GROUP BY 子句。 应为连接和分组操 作中所涉及的列创建多个非聚集索引。
2020/11/20
14
SQL Server2005
例5.2 为sales数据库中的Product表创建一个复合 索引,依据字段CategoryID和Price进行排序。
USE sales GO CREATE INDEX C_P_index ON Product (CategoryID, Price)
查看索引信息,其语法形式如下:
sp_helpindex [@objname]=’name’
例5.3 利用系统存储过程查看sales数据库中表

实验六 视图和索引 实验指导

实验六 视图和索引 实验指导

实验六视图和索引实验指导一、视图视图是SQL Server中重要的数据库对象。

视图常用于集中、简化和定制显示数据库的数据信息,为用户从多种角度观察数据库中的数据提方便。

为了屏蔽数据的复杂性、简化用户对数据的操作、控制用户访问数据的权限、保护数据安全,常为不同的用户创建不同的视图。

1. 视图的基本概念视图是从一个或多个表或视图导出的表;其结构和数据是建立在对表的查询基础上的。

和表一样,视图也是包括几个被定义的数据列和多个数据行。

但就本质而言,这些数据列和数据行来源于其所引用的表。

所以,视图不是真实存在的基础表,而是一张虚表。

视图所对应的数据并不实际地以视图结构存储在数据库中,而是存储在视图所引用的表中。

视图一经定义便存储在数据库中,与其相对应的数据并没有像表那样又在数据库中再存储一份。

通过视图看到的数据,只是存放在基本表中的数据。

对视图的操作与对表的操作一样,可以对其进行查询、修改(有一定的限制)、删除。

当对通过视图看到的数据进行修改时,相应的基本表的数据也要发生变化,同时若基本表的数据发生变化,则这种变化也可以自动地反映到视图中。

可以将任何符合视图创建规定的SELCT语句命名和存储为视图。

在视图中北查询的表称为基表。

视图的常见实例如下。

●一个基表的行或列的于集。

●两个或多个表的合并。

●两个或多个表的联接。

●一个基表的统计总汇。

●另外一个视图的子集。

●视图和基表的混合。

2. 创建视图在SQL Server2008中创建视图,创建者必须拥有创建视图的权限,并且对视图中引用的基表或视图有许可权。

此外,创建视图前还应该注意以下几点:●只能在当前数据库中创建视图。

如果使用分布式查询,视图所引用的基表和视图可以存在于其他数据库或其他服务器中。

●在一个视图中最多引用1024列,视图中记录的行数限制由基表中的记录数目决定。

●视图的名称必须遵循标识符的命名规则,且对每个架构都必须唯一,并且该名称不得与该架构包含的任何表的名称相同。

数据库实用技术-实验六

数据库实用技术-实验六

实验报告单院(系)计算机学院专业计算机科学与技术班级姓名学号同组人实验室S4305 组号日期课程数据库实用技术指导教师成绩实验项目编号8103203006 实验项目名称索引和数据的完整性一、实验目的(1)掌握索引的使用方法;(2)掌握数据完整性的实现方法;二、实验环境WIN7操作系统SQL Server2008三、实验原理(或要求)(1)了解索引的作用与分类;(2)掌握索引的创建方法;(3)理解数据的完整性的概念与分类;(4)掌握各种数据完整性的实现方法。

四、实验步骤(1)建立索引①使用CREATE INDEX语句创建索引。

●对YGGL数据库的Employees表中的DepartmentID列建立索引。

在查询分析器中输入如下程序并执行:USE YGGLGOCREATE INDEX depart_indON Employees(DepartmentID)GO●在Employees表的Name列和Address列上建立复合索引。

CREATE INDEX Ad_indON Employees(Name,Address)●对Departments表上的DepartmentName列建立唯一非聚集索引。

CREATE UNIQUE INDEX Dep_indON Departments(DepartName)②使用界面方式创建索引。

使用界面方式在Employees表的PhoneNumber列上创建索引。

启动SQL Server Management Studio,在对象资源管理器中展开数据库YGGL,展开表Employees,右击“索引,选择“新建索引”选项。

在新建索引的窗口中填写索引的名称和类型,单击“添加”按钮,在列表框中选择要创建的索引的列,选择完单击“确定”按钮即完成创建工作。

(2)重建索引。

重建表Employees中的所有索引。

USE YGGLGOALTER INDEX ALLON Employees REBUILD(3)删除索引。

索引PPT

索引PPT

给所有的页建立一个目 录项
索引需要完成的事 情
下一个数据页中用户记录的主键 值必须大于上一个页中用户记录 的主键值。(页分裂操作)
给所有的页建立一个目录项
目录项内容
页的用户记录中的最小主键值 页号
03 InnoDB中的索引方案
InnoDB中的索 引方案
想根据主键值查找一条用户记录需要经过的3个步骤 1. 确定目录项记录页 (多级目录查找)
3. 目录项记录中不再是主键+页号的搭配,而变成了C2列+主 键+页号的搭配。(主键是为了确保二级索引目录项的唯一性)
几种索引类型
联合索引
01
02
可以同时以多个列的大 小作为排序规则,即同 时为多个列建立索引。
以为c2和c3列建立联 合索引为例子
联合索引
以为c2和c3列建立联合索引为例子 1. 先把各个记录和页按照C2列进
2. 从所在的页内中查找相应的记录 缺点
因为不能定位所要查找的记录具体在哪 一个页。所以只能从第一个页开始,沿 着双向链表找下去。然后在每一个页中 使用【在一个页中的查找】的步骤
02 索引方案
索引方案
索引需要完成的事情
索引方案
索引需要完成的事情
下一个数据页中用户记 录的主键值必须大于上 一个页中用户记录的主 键值。(页分裂操作)
06 5 . 精 确 匹 配某 一列
并范围匹配另一列
B+树索引的 使用
B+树索引适用于下边这些 情况
6. 用于排 序
1
7. 用于分 组
2
怎么看是否可以走 索引?
在给定条件下,数据是否有序
6. 用于排序
不使用索引的文件排序(filesort)

索引的建立和运用

索引的建立和运用

索引1、索引分单列索引和组合索引单列索引:即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。

组合索引:即一个索包含多个列。

1.普通索引。

这是最基本的索引,它没有任何限制。

它有以下几种创建方式:(1)创建索引:CREATE INDEX indexName ON tableName(tableColumns(length));如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB 和TEXT 类型,必须指定length,下同。

(2)修改表结构:ALTER tableName ADD INDEX [indexName] ON (tableColumns(length)) (3)创建表的时候直接指定:CREATE TABLE tableName ( [...], INDEX [indexName] (tableColumns(length)) ;2.唯一索引。

它与前面的"普通索引"类似,不同的就是:索引列的值必须唯一,但允许有空值。

如果是组合索引,则列值的组合必须唯一。

它有以下几种创建方式:(1)创建索引:CREATE UNIQUE INDEX indexName ON tableName(tableColumns(length)) (2)修改表结构:ALTER tableName ADD UNIQUE [indexName] ON (tableColumns(length)) (3)创建表的时候直接指定:CREATE TABLE tableName ( [...], UNIQUE [indexName] (tableColumns(length));3.主键索引它是一种特殊的唯一索引,不允许有空值。

一般是在建表的时候同时创建主键索引:CREATE TABLE testIndex(i_testID INT NOT NULL AUTO_INCREMENT,vc_Name VARCHAR(16) NOT NULL,PRIMARY KEY(i_testID)); 当然也可以用ALTER命令。

第六章:索引的创建和管理

第六章:索引的创建和管理
上一页 下一页 返回本章首页
第6章 索引的创建和管理
CREATE INDEX命令创建索引各参数说明如下: 命令创建索引各参数说明如下: 命令创建索引各参数说明如下
UNIQUE:用于指定为表或视图创建唯一索引,即不允许存 :用于指定为表或视图创建唯一索引, 在索引值相同的两行。 在索引值相同的两行。 CLUSTERED:用于指定创建的索引为聚集索引。 :用于指定创建的索引为聚集索引。 NONCLUSTERED:用于指定创建的索引为非聚集索引。 :用于指定创建的索引为非聚集索引。 index_name:用于指定所创建的索引的名称。 用于指定所创建的索引的名称。 table:用于指定创建索引的表的名称。 用于指定创建索引的表的名称。 view:用于指定创建索引的视图的名称。 用于指定创建索引的视图的名称。 ASC|DESC:用于指定具体某个索引列的升序或降序排序方向。 :用于指定具体某个索引列的升序或降序排序方向。 Column:用于指定被索引的列。 用于指定被索引的列。 PAD_INDEX:用于指定索引中间级中每个页(节点)上保持 :用于指定索引中间级中每个页(节点) 开放的空间。 开放的空间。
上一页
下一页
返回本章首页
第6章 索引的创建和管理
三、索引的分类
1、聚集索引 、 对表的物理数据页中的数据按列进行排序,然后再重新存储到磁盘上, 对表的物理数据页中的数据按列进行排序,然后再重新存储到磁盘上, 即聚集索引与数据是混为一体的,它的叶节点中存储的是实际的数据。 即聚集索引与数据是混为一体的,它的叶节点中存储的是实际的数据。 2、非聚集索引 、 具有完全独立于数据行的结构, 具有完全独立于数据行的结构,使用非聚集索引不用将物理数据页中的 数据按列排序。 数据按列排序。非聚集索引的叶节点存储了组成非聚集索引的关键字值 和行定位器。 和行定位器。 3、复合索引 、 如果需要对多个字段的组合创建,即一个索引中含有多个字段, 如果需要对多个字段的组合创建,即一个索引中含有多个字段,可以建 立符合索引。 立符合索引。 4、唯一索引 、

创建索引概要

创建索引概要

6.1.1 索引的基础知识
3)使用索引的代价 ①创建索引要花费时间和占用存储空间。 创建索引需要占用存储空间,如创建聚簇索引需要占用的存储空 间是数据库表占用空间的1.2倍。在建立索引时,数据被复制以便 建立聚簇索引,索引建立后,再将旧的未加索引的表数据删除。 创建索引也需要花费时间。 ② 建立索引加快了数据检索速度,却减慢了数据修改速度。 因为每当执行一次数据的插入、删除和更新操作,就要维护索引。 修改的数据越多,涉及维护索引的开销也就越大。如果将一些数 据行插入到一个已经放满行的数据页面上,还必须将这个数据页 面中最后一些数据移到下一个页面中去,这样,还必须改变索引 页中的内容,以保持数据顺序的正确性。这就是对索引的维护。 由于修改数据时要动态维护其索引,所以,对建立了索引的表执 行修改操作要比未建立索引的表执行修改操作所花的时间要长。 因此,创建索引虽然可以加快数据查询的速度,但是却会减慢数 据修改的速度。
6.1.3索引的操作
在student数据库中,为“课程”表创建一个基于“课程号” 的名为khh_index,唯一性聚簇索引,升序,填充因子50%。
USE student GO CREATE UNIQUE CLUSTERED INDEX khh_index ON 课程(课程号ASC ) WITH FILLFACTOR = 50
6.1.3索引的操作
2. 创建索引的SQL语句语法 创建索引使用的是CREATE INDEX语句。CREATE INDEX 语句的语法形式如下: CREATE [UNIQUE] [CLUSTERED | NONCLUSTERED] INDEX index_name ON table_name(column_name [ ASC | DESC ] [ ,...n ] ) [WITH [PAD_INDEX] [[,] FILLFACTOR = fillfactor] [[,] DROP_EXISTING] ]

创建和优化索引课件

创建和优化索引课件

非聚集索引
•B 树引用底层堆或聚集索引 • 每个表最多 249 个非聚集索引
id index_id>1
root_page
根索引页
叶节点 堆或聚集索引
索引页 数据页
第 2 节:创建索引
• 创建索引概述 • 唯一索引 • 创建多列索引的注意事项 • 何时创建计算列的索引 • 已分区索引 • 在索引中并入可用空间的选项 • 获取索引信息的方法 • 演示:创建索引
第 6 章:创建和优化索引
• 规划索引 • 创建索引 • 优化索引
第 1 节:规划索引
• SQL Server 如何访问数据 •堆 • 聚集索引 • 非聚集索引
SQL Server 如何访问数据
表扫描
SQL Server 读取所有表页
索引查找
SQL Server 使用索引页查找行 SQL Server 2008 引入了增强的全文索引
mike0
M
S

231
fukiko0
M
M

242
pat0
M
S


291
pat0
F
S

不允许重复键值
创建多列索引的注意事项
复合索引 • 键中最多包含 16 列和 900 字节
• 先定义唯一性最高的列
CREATE NONCLUSTERED INDEX K_Contact_LastName_First Name ON Peson.Contact ( LastName ASC, FirstName ASC )
何时创建计算列的索引
以下情况下,可创建计算列的索引:
✓ 表达式是确定性的且精确的 ✓ ANSI_NULLS connection_level 选项为 ON ✓ 列的计算值不可为 text、ntext 或 image 数据类型 ✓ 创建索引或更改造成索引更新时,必需的选项设置为 ON ✓ NUMERIC_ROUNDABORT 选项设置为 OFF

第6章 索引及其应用概论

第6章 索引及其应用概论
第6章 索引及其应用
• 6.1 索引概述 • 6.2 创建索引 • 6.3 管理和维护索引 • 6.4 全文索引
2020年11月20日星期五
Page 1
2
• 教学要求:通过本章学习,读者应掌握以 下内容:
– 索引的概念和功能; – 使用对象资源管理器和T-SQL命令两种方式创
建、修改、删除索引的方法; – 全文索引的定义与使用。
2020年11月20日星期五
Page 10
11
• 【例6.3】 使用CREATE INDEX语句,在“学生 信息”表的“dept_id”列和“stu_name”列上 创建名为“IX_zyxm”的非聚集、复合索引。
• 运行如下命令。 CREATE NONCLUSTERED INDEX IX_zyxm ON 学生信息 (dept_id,stu_name) GO • 使用系统存储过程sp_helpindex查看xs表的索引
情况。 EXEC sp_helpindex 学生信息
2020年11月20日星期五
Page 11
12
• 用户在创建和使用惟一索引时应注意如下事项。 • (1)在建有聚集惟一索引的表上,执行INSERT语句或
2020年11月20日星期五
Page 2
6.1 索引概述
3
• 索引是一个列表,这个列表中包含了某个表中一列或者若 干列的集合,以及这些值的记录在数据表中存储位置的物 理地址。
• 6.1.1索引的功能 • 使用索引可以大大提高系统的性能,其具体表现在: • (1)加快数据查询 • (2)加快表的连接、排序和分组工作 • (3) 索引能提高WHERE语句提取数据的速度,也能提高
Index)创建并管理的一种特殊类型的基于 标记的功能性索引。由Microsoft SQL Server全文引擎(MSFTESQL)服务创建和 维护,可以大大提高从字符串中搜索数据 的速度,用于帮助用户在字符串数据中搜 索复杂的词。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验六索引的创建和使用
建议学时:2
实验目的:
1)了解索引的概念、优点及分类。

2)掌握在SQL Server Management Studio 中创建、修改和删除索引的操作。

3)掌握使用T-SQL语句创建、修改和删除索引的操作。

实验内容及步骤:
(一)索引的概念
数据库中的索引是一个列表,在这个列表中包含了某个表中一列或者若干列值的集合,以及这些值的记录在数据表中的存储位置的物理地址。

索引的优点:
1.可以大大加快数据检索速度。

2.通过创建唯一索引,可以保证数据记录的唯一性。

3.在使用ORDER BY和GROUP BY子句进行检索数据时,可以显著减少查询中分组和排序的时间。

4.使用索引可以在检索数据的过程中使用优化隐藏器,提高系统性能。

5.可以加速表与表之间的连接,这一点在实现数据的参照完整性方面有特别的意义。

索引的分类:
1.聚集索引
聚集索引基于数据行的键值,在表内排序和存储这些数据行。

每个表只能有一个聚集索引,因为数据行本身只能按一个顺序存储,表中的物理顺序和索引中行的物理顺序是相同的。

2.非聚集索引
非聚集索引具有完全独立于数据行的结构,使用非聚集索引不用将物理数据页中的数据按列排序。

非聚集索引包含索引键值和指向表数据存储位置的行定位器。

可以对表或索引视图创建多个非聚集索引。

设计非聚集索引是为了改善经常使用的、没有建立聚集索引的查询的性能。

3.唯一索引
确保索引键不包含重复的值。

聚集索引和非聚集索引都可以是唯一索引,这种唯一性与主键约束是相关联的,在某种程度上,主键约束等于唯一性的聚集索引。

(二)SSMS中索引的管理
1.新建索引
【例1】为GZGL数据库中的employee表新建非聚集索引i_emp_age,要求按emp_age 升序完成。

①在【对象资源管理器】中,展开指定的服务器、数据库和要创建索引的表。

右键单击【索引】,然后单击【新建索引】→【非聚集索引】,如图3-45所示。

②出现的【新建索引】对话框,如图3-46所示。

在【索引名称】文本框中输入新建索引的名称i_emp_age,在下面的复选框中可设定是否唯一。

③在【索引键列】可使用旁边的【添加】按钮添加要设定索引的属性,弹出选择列对话框,如图3-47所示,选择emp_age,然后单击【确定】按钮。

④返回【新建索引】对话框,在如图3-48所示的【索引键列】中可设置【排序次序】等属性,最后单击“确定”按钮,即可生成新的索引。

如果需要建立基于多个属性的复合索引,可在步骤③中添加多个属性。

图3-45 新建非聚集索引
图3-46 新建索引窗口
图3-47 选择列窗口
图3-48 设置索引列属性
2. 查看和修改索引
在【对象资源管理器】中,展开指定的服务器、数据库和要创建索引的表。

右键单击要修改的索引,然后单击【属性】,在出现的【索引属性】对话框中,可以修改索引的大部分设置。

要修改索引的名称,右键单击要修改的索引,然后单击【重命名】,然后直接在【索引名】文本框中输入新的索引名称替换原来的索引名称。

3. 删除索引
在【对象资源管理器】中,右键单击要删除的索引,单击【删除】按钮,即可。

(三)使用T-SQL语句管理索引
1.创建索引
语法:CREATE [UNIQUE] [CLUSTERED│NONCLUSTERED]INDEX index_name ON {table│view} (column [ASC│DESC] [,…n])
【例2】为表employee创建一个非聚集索引,索引字段为emp_name,索引名为i_emp_name。

use gzgl
create index i_emp_name on employee(emp_name)
【例3】新建一个表,名称为temp,为此表创建一个惟一聚集索引,索引字段为temp_number,索引名为i_temp_number。

use gzgl
create table t_temp
(temp_number int,
temp_name char(10),
temp_age int)
create unique clustered index i_temp_number
on t_temp(temp_number)
【例4】为表employee创建一个复合索引,使用emp_sex的升序和emp_age的降序排列,索引名为i_employee。

create index i_employee on s(emp_sex,emp_age desc)
2.查看索引
使用系统存储过程sp_helpindex 查看索引信息,语法格式如下:
sp_helpindex [@objname=] ‘name’
【例5】查看employee表的索引信息。

sp_helpindex employee
3.重命名索引
使用系统存储过程sp_rename修改索引名称,语法格式如下:
sp_rename[@objname=] ‘object_name’,[@newname=] ‘new_name’
[,[@objtype=] ‘object_type’]
【例6】将s表中的索引i_employee的名称改为i_s_sexandage。

use student
sp_rename ‘s.i_employee’,’i_s_sexandage’,’index’
4.删除索引
语法格式如下:
drop index ‘table.index│view.index’[,…n]
【例7】删除表s中的索引i_s_sexandage。

drop index s. i_s_sexandage
实验习题:
(1)为s表创建一个复合索引i_sdept_sno,以院系升序、学号降序。

(2)查看表s中的索引信息。

(3)将索引i_sdept_sno的名称改为i_s。

(4)删除索引i_s。

(5)为课程表创建一个唯一聚集索引i_cname,以课程名升序。

如果不能执行,请分析
说明原因。

相关文档
最新文档