《数据库原理与应用-(SQLServer2008版)》 唐国良蔡中民-第7章.ppt

《数据库原理与应用-(SQLServer2008版)》 唐国良蔡中民-第7章.ppt

  1. 1、本文档共83页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《数据库原理与应用-(SQLServer2008版)》 唐国良蔡中民-第7章

第7章 索引和查询优化 ;掌握使用T-SQL语句创建聚集索引和非聚集索引的方法;为了使用有效的索引,我们必须对索引的构成有所了解,对数据库的文件结构有所了解,进而对整个数据库对象的存储结构有所了解。只有这样我们才能从全局出发,衡量添加索引是否能提高数据库系统的查询性能。;图7- 1 数据页示意图;在SQL Server中,页的大小为8 KB。这意味着 SQL Server数据库中每 MB有128页。那么根据数据库的文件大小,我们可以算出数据库有多少数据页。每页的开头是 96 字节的标头,用于存储有关页的系统信息。此信息包括页码、页类型、页的可用空间以及拥有该页的对象的分配单元ID。SQL Server数据库的数据文件中所使用的页类型如图7-2所示。;统一区:由单个对象所有。区中的所有8页只能由所属对象使用。 ;图7- 2 数据页示意图;7.2 索引及其分类 ;(2)保证数据记录的唯一性;;注意:并不是所有表扫描的开销都大于设置索引的开销。例如,如果SQL Server要对数据表中的行的合理部分进行处理,有时候会对大约10%或更多的数据进行处理,那么你会发现,使用表扫描会比使用索引更好。另外当数据库的表数据比较少时,建立索引的开销有时反而还会大于不建立的情况。这表明表扫描并不全是坏事,但是在大型的表上,表扫描的时间开销可能会比较大。;1. 聚集索引 ;2. 非聚集索引 ;因为非聚集索引以与基表分开的结构保存,所以可以在与基表不同的文件组中创建非聚集索引。如果文件组被保存在不同的磁盘上,在查询和提取数据时可以得到性能上的提升,这是因为SQL Server可以进行并行的I/O操作,从索引和基表中同时提取数据。;动作描述;4. 单一索引和组合索引 ;7.3.1 通过对象管理器创建索引 ;(2)右击【索引】,在弹出如图7-4所示的快捷菜单里选择【新建索引】选项。;“索引类型”组合框:用户可以选择聚集、非聚集等索引类型。这里选择“非聚集”选项。 ;图7-4 新建索引;图7-6 选择列对话框;忽略重复的值:如果选中此项,当插入一个重复值到索引字段中时,系统将会发出警告并忽略插入操作。如果不选,则系统会发出错误信息,并回滚插入操作。该项只有索引是唯一索引时才能使用。 ;设置最大并行度:该项用来设置使用索引进行单个查询时,可以使用的CPU数量。 ;2.利用【表设计器】窗口创建索引 ;(3)在【表设计器】窗口中,选择【sbirthday】属性列,右击,在弹出的快捷菜单中选择【索引/键】选项,如图7-8所示。;图7-8 【索引/键】选项 ;图7-9 【索引/键】窗口;1 .用CREATE INDEX 语句创建索引 ;ON database_name. [ schema_name ] . | schema_name. ] table_or_view_name;| column_name comparison_op constant]; | default ;[ ; ]; | FILLFACTOR =fillfactor; | DROP_EXISTING = { ON | OFF }; | MAXDOP =max_degree_of_parallelism;创建一个惟一索引,即索引的键值不重复。在列包含重复值时,不能建惟一索引。如要使用此选项,则应确定索引所包含的列均不允许NULL 值,否则在使用时会经常出错。 ;指定所创建的索引的名称。索引名称在一个表中应是惟一的,但在同一数据库或不同数据库中可以重复。 ;确定特定索引列的升序或降序排序方向,ASC为升序(默认) ,DESC为降序。;通过指定索引中要包含哪些行来创建筛选索引。筛选索引必须是对表的非聚集索引。为筛选索引中的数据行创建筛选统计信息。筛选谓词使用简单比较逻辑且不能引用计算列、UDT 列、空间数据类型列或 hierarchyID数据类型列。比较运算符不允许使用 NULL 文本的比较。请改用 IS NULL 和 IS NOT NULL 运算符。只能使用 AND 运算符合并比较和 IN 列表。;FILLFACTOR=fillfactor:称为填充因子,它指定创建索引时,每个索引页的数据占索引页大小的百分比,fillfactor的值为1到100。它其实同时指出了索引页保留的自由空间占索引页大小的百分比。即100-fillfactor。对于那些频繁进行大量数据插入或删除的表在建索引时应该为将来生成的索引数据预留较大的空间,即将fillfactor设得较小,否则,索引页会因数据的插入而很快填满,并产生分页,而分页会大大增加系统的开销。但如果设得过小,又会浪费大量的磁盘空间,降低查询性能。因此,对于此类表通常设一个大约为10的fillfactor。而对于数据不更改的、

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档