- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SQL Server 第章 索引、视图与游标
第6章 索引、视图与游标
6.1 索引
6.1.1 索引的基本概念
1. 索引的概念:
(1)索引:
索引是一个单独的、物理的数据结构,是某个表中一列或若干列值的集合和相应的指向物理标识这些值的数据页的逻辑指针清单。索引依赖于表建立的,提供了编排表中数据的内部方法
(2)表的存储:
★一部分用来存放表的数据页面
★一部分用来存放索引页面
索引与关键字有很大的联系,关键字可分两类:
★逻辑关键字:
★物理关键字:用来定义索引的列,即索引
(3)索引的作用:
① 索引可提供对一个表中的数据的有效访问,可用来加速数据的检索和强制唯一性限制
② 通过创建唯一性索引,可以保证每一行数据的唯一性
③ 可以大大加快数据的检索速度,这也是索引的最主要的原因
④ 可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义
⑤ 在使用ORDER和GROUP子句进行数据检索时,同样可显著减少查询中分组和排序的时间
⑥ 通过使用索引,可在查询的过程中使用优化隐藏器,提高系统性能
为什么不对表中的每一个列创建一个索引呢?
① 创建索引和维护索引要耗费时间
② 索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间
如果要建立聚集索引,那么需要的空间就会更大
③ 当对表中数据进行增加、删除和修改时,索引也要动态的维护,而降低了数据的维护速度
2. 索引的存储结构:
(1)聚集索引(Clustered Index):
对表的物理数据页中的数据按列进行排序,然后再重新存储到磁盘上,即聚集索引与数据是混为一体的,其叶节点中存储的是实际的数据
(2)非聚集索引(Nonclustered Index):
具有完全独立于数据行的结构,使用非聚集索引不用将物理数据页中的数据按列排序。非聚集索引的叶节点存储了组成非聚集索引的关键字值和行定位器
3. 索引键的组成:
(1)唯一索引:
确保表内的索引列中不包含重复的数据内容
唯一索引与表的主键类似,索引可不唯一
(2)复合索引:
在一个表中,通过连接或附接两个或多个列值而创建的索引
(3)覆盖索引:
当索引中包含了需要的所有信息时,称为覆盖索引。其键值包含了满足查询条件的所有数据
4.创建索引时需注意:
(1)当表中创建主关键字约束或唯一性约束时,SQL Server自动创建一个唯一性索引
(2)若表中已有数据,那么在创建索引时,SQL Server会检查数据的合法性。若有不合法数据,则创建索引失败
(3)当有多个列作为关键字时,应创建复合索引,即索引包含有两个或多个列
(4)基于相同列但列次序不同的复合索引也是不同
6.1.2 创建索引
1.创建索引的语法:
其中索引选项定义为:
说明:
●UNIQUE:为表或视图创建惟一索引(不允许存在索引值相同的两行)。视图上的聚集索引必须是UNIQUE索引
●CLUSTERED:指定创建的索引为聚集索引,键值逻辑顺序决定表中对应行物理顺序
●NONCLUSTERED:用于指定创建的索引为非聚集索引
●PAD_INDEX:用于指定索引中间级中每个页(节点)上保持开放的空间
●FILLFACTOR = 填充因子:用于指定在创建索引时,每个索引页的数据占索引页大小的百分比,填充因子的值为1到100
●IGNORE_DUP_KEY:用于控制当往包含于一个唯一聚集索引中的列中插入重复数据时SQL Server所作的反应
●DROP_EXISTING:指定应删除并重新创建已命名的先前存在的聚集索引/非聚集索引
●STATISTICS_NORECOMPUTE:用于指定过期的索引统计不会自动重新计算
●SORT_IN_TEMPDB:用于指定创建索引时的中间排序结果将存储在tempdb数据库中
●ON 文件组:用于指定存放索引的文件组
例6.1 在student表创建非聚集索引
CREATE INDEX idx_std ON student( st_nm )
例6.2 在student表创建复合索引
CREATE INDEX idx_std
ON student( st_id , st_nm )
WITH DROP_EXISTING
例6.3 在student表创建唯一非聚集索引
CREATE UNIQUE NONCLUSTERED INDEX idx_std
ON student( st_id )
WITH DROP_EXISTING
例6.4 使用填充因子创建唯一非聚集索引
CREATE UNIQUE NONCLUSTERED INDEX idx_std
ON student( st_id )
WITH PAD_INDEX , FILLFACTOR = 50 , DROP_EXISTING
2.用图形化界面创
文档评论(0)