- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第10章 索引 第十章 索引 10.1 索引概述 10.2 索引类型 10.3 创建索引 10.4 修改索引 10.5 删除索引 10.6 索引优化向导 10.1 索引概述 10.1 索引概述 10.1 索引概述 索引是一个单独的、物理的数据库结构,是为了加速对表中的数据行的检索而创建的一种分散存储结构。 索引是针对一个表而建立的,每个索引页面中的行都含有逻辑指针,指向数据库表中的物理位置,以便加速检索物理数据。 索引的主要优点是提高检索速度; 索引提高检索速度的代价是需要系统耗费更多的空间来存储索引,且在数据发生更改是,对索引的维护,也会耗费一定的时间; 10.2 索引类型 分类方法一:根据存储结构的不同将索引分为两大类 聚集索引 非聚集索引 分类方法二:根据唯一性 唯一索引 非唯一索引 10.2 索引类型 聚集索引 是指表中数据行的索引顺序与物理顺序完全相同。因为当为一个表的某列创建聚集索引时,表中的数据就会按该列进行重新排序,然后再存储到磁盘上。 具有唯一性。因为表的数据行只能以一种排序方式存储在磁盘上。 非聚集索引 具有与表中的数据完全分离的结构,包括非聚集索引键值和一个或多个指向包含该值的数据行的行定位器(行的地址)。 10.2 索引类型 非聚集索引与聚集索引的区别: (1)使用非聚集索引不用对物理数据页中的行进行排序。 (2)聚集索引只能有一个,而非聚集索引可以有多个。 10.2 索引类型 唯一索引 不允许两行具有相同的索引值。 不唯一索引 多行可以共享同一键值 注意:一种特殊的索引--主键索引 当为表创建主键时将自动创建主键索引,主键索引为聚集索引,是唯一索引的特殊类型。 10.3 创建索引 10.3.1 在图形界面下创建索引 1.打开Microsoft SQL Server Manager Studio。 2.在左侧的对象资源管理器中,依次展开“数据库|CJGL|表”,就可以看到已存在的表。 3.选择要创建索引的表,如Course表。单击该表左侧的“+”号,然后选择索引,单击右键,在弹出菜单中选择“新建索引”命令,如图所示。 10.3 创建索引 4.在弹出的“新建索引”对话框中输入索引的名称,设置索引的类型,如图所示。 10.3 创建索引 5.在对话框中单击“添加”按钮,将弹出“选择列”对话框,选择要添加到索引键的表列,这里我们选择的列是“coursename” 10.3 创建索引 6.还可以通过单击选择页中“选项”、“包含性列”、“存储”、“空间”和“筛选器”,对索引的属性进行进一步设置。 7.所有属性设置完毕后,单击“确定”按钮,即可创建一个索引。 10.3 创建索引 10.3.2 用SQL语句创建索引 CREATE [UNIQUE][CLUSTERED|NONCLUSTERED] INDEX 索引名 ON {表|视图}(列[ASC|DESC][,···n]) [ WITH backward_compatible_index_option [ ,...n ]] 其中:backward_compatible_index_option ::= { ????PAD_INDEX ??| FILLFACTOR = fillfactor ??| SORT_IN_TEMPDB ??| IGNORE_DUP_KEY ??| STATISTICS_NORECOMPUTE ??| DROP_EXISTING } 为表或视图创建唯一索引 创建聚集索引,即键值的逻辑顺序决定表中对应行的物理顺序。 创建一个非聚集。数据行的物理排序独立于索引排序。 10.3 创建索引 注1:默认情况下创建非聚集索引。 注2:具有唯一聚集索引的视图称为索引视图。为一个视图创建唯一聚集索引会在物理上具体化该视图。必须先为视图创建唯一聚集索引,然后才能为该视图定义其他索引 10.3 创建索引 【例10.1】创建唯一的、非聚集索引 在Student表的studentName列上创建一个唯一的、非聚集索引。 USE CJGL GO CREATE UNIQUE NONCLUSTERED INDEX IX_Student_StudentName ON dbo.Student(StudentName) GO 【例10.2】创建聚集索引 在Student表的studentID列上创建一个聚集索引。 USE CJGL GO CREATE CLUSTERED INDEX IX_Student_StudentID ON dbo.Student(StudentID) GO 10.3 创建索引 【例10.3】创建简单非聚集组合索引 在Student表的studentName、sex列上创建非
文档评论(0)