- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第10章索引.ppt.ppt
第10章 索 引 10.1 索引的基本概念 10.1.1 索引的定义 SQL Server的索引是一种物理结构,它能够提供一种以一列或多列的值为基础迅速查找表中行的能力。 10.1.2 索引的作用 对表中的列是否创建索引,以及创建何种索引,对于查询的响应速度会有很大差别。创建了索引的列几乎是立即响应,而不创建索引的列则需要较长时间的等待。 在数据库系统中创建索引主要有以下作用: ① 快速存取数据; ② 保证数据的一致性; ③ 实现表与表之间的参照完整性; ④ 在使用GROUP BY、ORDER BY子句进行查询时,利用索引可以减少排序和分组的时间。 10.1.3 索引的类型 按照索引的组织方式的不同,可以将索引分为聚集索引和非聚集索引。 (1)聚集索引 在聚集索引中,行的物理存储顺序与索引顺序完全相同,即索引的顺序决定了表中行的存储顺序,因为行是经过排序的,所以每个表中只能有一个聚集索引。 (2)非聚集索引 非聚集索引并不在物理上排列数据,即索引中的逻辑顺序并不等同于表中行的物理顺序,索引仅仅记录指向表中行的位置的指针,这些指针本身是有序的,通过这些指针可以在表中快速地定位数据。 10.2 创 建 索 引 在考虑是否在列上创建索引时,应考虑该列在查询中所起的作用。以下情况适合创建索引: 用作查询条件的列 频繁按范围搜索的列 连接中频繁使用的列 10.2.1 设计索引 设计索引时,应考虑以下数据库准则。 (1)一个表如果建有大量索引,会影响INSERT、UPDATE和DELETE语句的性能。 (2)避免对经常更新的表进行过多的索引,并且索引应保持较窄。 (3)使用多个索引可以提高更新少而数据量大的查询的性能。 (4)对小表进行索引可能不会产生优化效果。 (5)视图包含聚集函数、连接或聚集函数和连接的组合时,视图的索引可以显著地提升性能。 10.2.2 创建索引 1.使用Microsoft SQL Server Management Studio创建索引 使用Microsoft SQL Server Management Studio创建索引的步骤如下。 (1)启动SQL Server Management Studio工具,在“对象资源管理器”中,展开Database Engine实例。 (2)展开要在其上创建索引的表,在“Indexes”项上右击,在快捷菜单中选择“New Index…”命令。 (3)弹出“New Index”对话框。 在“Index name”文本框中,输入索引的名称。“Index type”列表框用于设置索引类型,共有Clustered、Nonclustered、Primary XML 3项。 (4)单击“Add…”按钮,弹出如图10-4所示的对话框,选择要在其上创建索引的列。 (5)单击“OK”按钮,回到“New Index”对话框,其中,“Sort Order”列用于设置索引的排列顺序。 (6)单击“OK”按钮,即完成了索引的创建过程。 2.使用T-SQL语句创建索引 也可以使用CREATE INDEX语句来创建索引。语法如下: CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name ON object ( column [ ASC | DESC ] [ ,...n ] ) [ INCLUDE ( column_name [ ,...n ] ) ] [ WITH DROP_EXISTING ] object ::= {[database_name.[schema_name ].|schema_name. ] table_or_view_name} 其中各参数的含义如下。 (1)UNIQUE 为表或视图创建唯一索引。 (2)CLUSTERED 表示创建聚集索引,键值的逻辑顺序决定表中对应行的物理顺序。 (3)NONCLUSTERED 创建非聚集索引。 (4)index_name 索引的名称。 (5)column 索引所基于的一列或多列。 (6)[ASC|DESC] 确定特定索引列的升序或降序排序方向。默认值为ASC。 (7)INCLUDE(column_name [ ,... n ] ) 指定要添加到非聚集索引的叶级别的非键列。 (8)DROP_EXIS
文档评论(0)