- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章索引与视图(教材)
第7章 索引与视图
本章内容
7.1 索引概述
7.2 索引的操作
7.3 视图概述
7.4 视图的操作
7.5 视图的应用
7.1 索引概述
索引的基本概念
索引是对数据库表中一个或多个字段的值进行排序而创建的一种分散存储结构。
7.1 索引概述
索引的基本概念
索引是对数据库表中一个或多个字段的值进行排序而创建的一种分散存储结构。
建立索引的目的有以下几点:
(1)加速数据检索
(2)加速连接、ORDER BY和GROUP BY等操作
(3)查询优化器依赖于索引起作用
(4)强制实行的惟一性
7.1 索引概述
索引的分类
根据数据库的功能,在SQL Server 2000中可创建3种类型的索引,
物理位置分:聚集索引,非聚集索引
特殊性分:一般索引、惟一性索引、主键索引。
1.惟一性索引
在表中建立惟一性索引时,组成该索引的字段或字段组合在表中具有惟一值,也就是说,对于表中的任何两行记录来说,索引键的值都是各不相同。
2.主键索引
表中通常有一个字段或一些字段组的合,其值用来惟一标识表中的每一行记录,该字段或字段组合称为表的主键。
7.1 索引概述
3.聚集索引
在聚集索引中,表中各记录的物理顺序与键值的逻辑(索引)顺序相同。只有在表中建立了一个聚集索引后,数据才会按照索引键值指定的顺序存储到表中。由于一个表中的数据只能按照一种顺序来存储,所以在一个表中只能建立一个聚集索引。
索引缺点
①创建索引要花费时间和占用存储空间。
创建索引需要占用存储空间,
如创建聚簇索引需要占用的存储空间是数据库表占用空间的1.2倍。在建立索引时,数据被复制以便建立聚簇索引,索引建立后,再将旧的未加索引的表数据删除。
创建索引也需要花费时间。
② 建立索引加快了数据检索速度,却减慢了数据修改速度。
维护索引:
因为每当执行一次数据的插入、删除和更新操作,就要维护索引。修改的数据越多,涉及维护索引的开销也就越大。
对建立了索引的表执行修改操作要比未建立索引的表执行修改操作所花的时间要长。
哪些列需要建索引
主键
通常,检索、存取表是通过主键来进行的。因此,应该考虑在主键上建立索引。
连接中频繁使用的列
用于连接的列若按顺序存放,系统可以很快地执行连接。如外键,除用于实现参照完整性外,还经常用于进行表的连接。
在某一范围内频繁搜索的列和按排序顺序频繁检索的列
不考虑建立索引的列
很少或从来不在查询中引用的列
因为系统很少或从来不根据这个列的值去查找数据行。
只有两个或很少几个值的列(如性别,只有两个值“男”或“女”),以这样的列创建索引并不能得到建立索引的好处。
以bit、text、image数据类型定义的列。
数据行数很少的小表一般也没有必要创建索引。
标准:当数据更新的性能比查询的性能更重要时,不应创建索引
技巧:根据需要创建或删除索引以提高性能。如:对表进行大批量更新时,可先删索引。待操作完成再重建索引
创建索引
注意事项
① 当在一个表上创建PRIMARY KEY约束或UNIQUE约束时,SQL Server自动创建惟一性索引。
②不能在已经创建PRIMARY KEY约束或UNIQUE约束的列上创建索引。定义PRIMARY KEY 约束或UNIQUE约束与创建标准索引相比应是首选的方法。
③在一个列上创建索引之前,确定该列是否已经存在索引。
使用企业管理器创建索引
T-SQL建立索引
7.2 索引的操作
创建索引
1.使用企业管理器向导建立索引
2.使用企业管理器直接创建索引
7.2 索引的操作
3.使用Transact-SQL语句创建索引
语法格式:
CREATE [UNIQUE][CLUSTERED|NONCLUSTERED] INDEX index_name
ON table_name(column_name[ASC|DESC],…n)
[WITH
[PAD_INDEX]
[[,] FILLFACTOR=fillfactor]
[[,] IGNORE_DUP_KEY]
[[,] DROP_EXISTING]
[[,] STATISTICS_NORECOMPUTE]
]
[ON filegroup]
7.2 索引的操作
例7-1 按employee表的employee_name列建立非聚集索引。
CREATE NONCLUSTERED
INDEX name_idx
ON employee(employee_name)
7.2 索引的操作
查看索引
1.使用企业管理器查看索引
2.使用系统存储过程查看索引
语法格式:
sp_helpindex [@objname]=name
其中[@obj
文档评论(0)