欢迎来到天天文库
浏览记录
ID:38374233
大小:372.00 KB
页数:26页
时间:2019-06-11
《数据库技术与应用—SQL Server 2008(第2版)第10章 索引》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第10章 索引10.1索引概述索引是一个单独的、物理的数据库结构,是为了加速对表中的数据行的检索而创建的一种分散存储结构。索引是针对一个表而建立的,每个索引页面中的行都含有逻辑指针,指向数据库表中的物理位置,以便加速检索物理数据。10.2索引类型根据存储结构的不同将索引分为两大类聚集索引非聚集索引其他的种类:唯一索引非唯一索引10.2索引类型聚集索引是指表中数据行的物理顺序与索引顺序完全相同。因为当为一个表的某列创建聚集索引时,表中的数据就会按该列进行重新排序,然后再存储到磁盘上。具有唯一性。因为表的数据行只能以一种排序方式存储在磁盘上。10.2索引类型非聚集索引具有与
2、表中的数据完全分离的结构,包括非聚集索引键值和一个或多个指向包含该值的数据行的行定位器(行的地址)。与聚集索引的区别:使用非聚集索引不用对物理数据页中的行进行排序。可以创建多个非聚集索引;而聚集索引只能有一个。10.2索引类型唯一索引不允许两行具有相同的索引值。可以是聚集索引,也可以是非聚集索引。主键索引当为表创建主键时将自动创建主键索引,主键索引为聚集索引,是唯一索引的特殊类型。10.3创建索引10.3.1在图形界面下创建索引1.打开MicrosoftSQLServerManagerStudio。2.在左侧的对象资源管理器中,依次展开“数据库
3、CJGL
4、表”,就可以看
5、到已存在的表。3.选择要创建索引的表,如Course表。单击该表左侧的“+”号,然后选择索引,单击右键,在弹出菜单中选择“新建索引”命令,如图所示。10.3创建索引4.在弹出的“新建索引”对话框中输入索引的名称,设置索引的类型,如图所示。10.3创建索引5.在对话框中单击“添加”按钮,将弹出“选择列”对话框,选择要添加到索引键的表列,这里我们选择的列是“coursename”10.3创建索引6.还可以通过单击选择页中“选项”、“包含性列”、“存储”、“空间”和“筛选器”,对索引的属性进行进一步设置。7.所有属性设置完毕后,单击“确定”按钮,即可创建一个索引。10.3创建
6、索引创建索引CREATE[UNIQUE][CLUSTER
7、NONCLUSTERED]INDEX索引名ON{表
8、视图}(列[ASC
9、DESC][,···n])注:默认情况下创建非聚集索引。10.3创建索引【例10.1】创建唯一的、非聚集索引在Student表的studentName列上创建一个唯一的、非聚集索引。USECJGLGOCREATEUNIQUENONCLUSTEREDINDEXIX_Student_StudentNameONdbo.Student(StudentName)GO【例10.2】创建聚集索引在Student表的studentID列上创建一个聚集索引。U
10、SECJGLGOCREATECLUSTEREDINDEXIX_Student_StudentIDONdbo.Student(StudentID)GO10.3创建索引【例10.3】创建简单非聚集组合索引在Student表的studentName、sex列上创建非聚集组合索引。USECJGLGOCREATEINDEXIX_Student_Name_sexONdbo.Student(StudentName,sex)GO10.3创建索引【例10.4】使用IGNORE_DUP_KEY选项首先在该选项设置为ON时在临时表中插入多行,然后在该选项设置为OFF时执行相同操作,以演示IG
11、NORE_DUP_KEY选项的影响。单个行被插入#Test表,在执行第二个多行INSERT语句时将导致出现重复值。表中的行计数会返回插入的行数。USECJGLGOCREATETABLE#Test(C1int,C2nchar(50));GOCREATEUNIQUEINDEXAK_IndexON#Test(C1)WITH(IGNORE_DUP_KEY=ON);GOINSERTINTO#TestVALUES(1,'zhangsan');INSERTINTO#TestVALUES(1,'lisi');GODROPTABLE#Test;GO10.3创建索引【例10.5】使用DRO
12、P_EXISTING删除和重新创建索引使用DROP_EXISTING选项在Student表的StudentName列上删除并重新创建现有索引。USECJGLGOCREATENONCLUSTEREDINDEXIX_Student_StudentNameONdbo.Student(StudentName)WITH(DROP_EXISTING=ON)GO10.3创建索引【例10.6】为视图创建索引本示例将创建一个视图并为该视图创建索引。USECJGLGOIFOBJECT_ID('dbo.v_StuInfo')ISNOTNULLDROPVIEWd
此文档下载收益归作者所有