- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第8章 索引的创建和使用 8. 1 概述 8. 2 创建索引 8. 3 查看、修改和删除索引 索引 8. 1 概述 8. 1. 1 索引的概念 数据库中的索引是一个列表,在这个列表中包含了某个表中一列或者若干列值的集合,以及这些值的记录在数据表中的存储位置的物理地址。 8. 1 概述 8. 1. 2 索引的优点 可以大大加快数据检索速度。 通过创建唯一索引,可以保证数据记录的唯一性。 在使用ORDER BY和GROUP BY子句进行检索数据时,可以显著减少查询中分组和排序的时间。 使用索引可以在检索数据的过程中使用优化隐藏器,提高系统性能。 可以加速表与表之间的连接,这一点在实现数据的参照完整性方面有特别的意义。 在聚集索引中,表中各行的物理顺序与索引键值的逻辑(索引)顺序相同。 表只能包含一个聚集索引。 聚集索引通常可加快 UPDATE 和 DELETE 操作的速度,因为这两个操作需要读取大量的数据。 创建或修改聚集索引可能要花很长时间,因为执行这两个操作时要在磁盘上对表的行进行重组。 建立索引的一般原则 对经常用来检索的字段建立索引 对数据表中的主键建立索引 对数据表中的外键建立索引 对经常用于连接的字段建立索引 可考虑将聚集索引用于: 包含数量有限的唯一值的列,如 state 列只包含 50 个唯一的州代码。 使用下列运算符返回一个范围值的查询:BETWEEN、、=、 和 =。 返回大结果集的查询。 不能创建索引的字段 Create table tbl_sales ( id int not null, qty int , uPrice money, amt as qty*uPrice Qdate as getdate() ) 可以通过以下语句决定哪些列上可以创建索引 Select columnproperty(object_id(‘tbl_sqles’),’amt’,’iddeterministic’) 8. 1 概述 8. 1. 3 索引的分类 1.聚集索引和非聚集索引 2.复合索引单一索引 3.唯一索引 聚集索引和非聚集索引 聚集索引 要建立一个索引,需要大约1.2倍于数据大小的空间。查看一个表的索引在数据库中所占的空间大小,可以使用系统存储过程sp_spaceused,对象名指定为被索引的表名。 要建立一个聚集索引,可以使用关键字CLUSTERED。)记住一个表只能有一个聚集索引。(CREATE CLUSTERED INDEX mycolumn_clust_index ON mytable(mycolumn) ? 如果表中有重复的记录,当试图用这个语句建立索引时,会出现错误。但是有重复记录的表也可以建立索引;只要使用关键字ALLOW_DUP_ROW 聚集索引 聚集索引对于那些经常要搜索范围值的列特别有效。使用聚集索引找到包含第一个值的行后,便可以确保包含后续索引值的行在物理相邻。 例如,如果应用程序执行的一个查询经常检索某一日期范围内的记录,则使用聚集索引可以迅速找到包含开始日期的行,然后检索表中所有相邻的行,直到到达结束日期。这样有助于提高此类查询的性能。 同样,如果对从表中检索的数据进行排序时经常要用到某一列,则可以将该表在该列上聚集(物理排序),避免每次查询该列时都进行排序,从而节省成本。 聚集索引 要对一个表建立唯一索引,可以使用关键字UNIQUE。对聚集索引和非聚集索引都可以使用这个关键字。? CREATE UNIQUE CLUSTERED INDEX myclumn_cindex ON mytable(mycolumn ) 8. 2 创建索引 8. 2. 1 使用企业管理器创建索引 在企业管理器中,展开指定的服务器和数据库,选择要创建索引的表,从弹出的快捷菜单中依次选择“所有任务|管理索引”选项。 8. 2 创建索引 8. 2. 2 使用Transact-SQL语句创建索引 Transact-SQL语句中的CREATE INDEX命令可以创建索引。 CREATE INDEX命令既可以创建一个可改变表的物理顺序的聚集索引,也可以创建提高查询性能的非聚集索引 。 单一索引与复合索引 单一索引:是指索引列为一列的情况,即新建索引的语句只实施在一列上。 复合索引:用户可以在多个列上建立索引 (1)建立索引idx1?? on?? col1? 执行select?? *?? from?? table1?? where?? col1=A???? 使用idx1? 执行select?? *?? from?? table1?? where?? col1=A?? and?? col2=B?? 也使用idx1?
文档评论(0)