使用索引提高查询效率.ppt

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

SELECT 驾照号,姓名,所学专业 FROM jsy WHERE 驾照号=002011‘ 点击 执行按钮执行后,单击工具栏中“显示估计的执行计划”图标,选择“执行计划”,结果如图8.1所示。 将鼠标分别停留在SELECT和“聚集索引查找”对象上,显示各对象的系统信息即系统查询成本和效率,如图8.2所示。 8.2.2 界面方式创建索引用 第1步 在SQL Server ManagementStudio 的“对象资源管理器”面板中,选择要创建索引的表(如traffic1数据库中的xc1表), 然后展开xc1表前面的“+”号,选中“索引”选项右击,在弹出的快捷菜单中选择“新建索引”命令,如图8.3所示。 第 2步 选择“新建索引”命令,进入如图8.4所示的“新建索引”窗口,在该窗口中列出了xc1表上要建立的索引,包含其名称、是不是聚集索引、是否设置唯一索引等。输入索引名称为“ix_ xc1”,选择“非聚集”选项。 第 3步 单击“添加”按钮进入如图8.5所示的界面,在列表中选择需要创建索引的列。对于复合索引,可以选择多个组合列。 第 4步 单击“确定”按钮,SQL Server将完成索引的创建工作。 8.3.1 命令方式删除索引用   使用DROP INDEX命令可以删 除索引,其语法格式为: DROP INDEX {table_name view_name}.index_name [,…n] 其中table_name为表名, view_name为视图名, 8.3删除索引 index_name 为索引文件名,可以 同时指定多个要删除的索引。 DROP INDEX 命令不能删除通过定 义PRIMARY KEY 或UNIQUE约束 创建的索引,不能对系统表执行该 命令。   只有表或视图的所有者、数据库所有者或数据库管理员才有权限 删除该表或视图的索引。 【例8.4】删除【例8.3】所创建的索引. USE traffic1 GO IF EXISTS(SELECT name FROM sysindexes WHERE name=’xc_ind’) DROP INDEX xc_ind GO 注意:DROP INDEX命令中要指定表名和索引名。当删除一个聚集索引时,如果这个表中还存在一些非聚集索引,则所有的非聚集索引将被重建,并且行指针将代替索引树叶级页的聚索引键值。 为了避免给系统增加过多的压力,如果真要删除表中所有的索引,那么首先应移去所有的非聚集索引,然后再删除聚集索引。  第1步 在SQL Server Management Studio的“对象资源管理器”面板中展开traffic1数据库,单击“表”选项展开“xc1”, 8.3.2 界面方式删除索引用 再展开“索引”前面的“+”号,选中索引名为“ix_xc1”,如图8.6所示。 第 2步 右击“ix_xc1”选项,在弹出的快捷菜单中选择“删除”命令,进入如图8.7所示的窗口,单击“确定”按钮,即可删除该索引。 一、选择性高的索引    使用索引主要是为在数据检索 时加快行定位速度,当列的选择性 越高,索引键中惟一值就越多,查 询记录就越快。可选择性是索引键 中惟一值个数的度量,如jsy表中驾 照号列具有惟一性,选择性最高 8.4使用好的索引 籍贯列的选择性次之,是否见习列 的选择性最低,只有“是”或“否”。 如指定驾照号值,结果集中返回一 行,如指定籍贯值,结果集中返回 若干行,如指定是否见习值,在结 果集中可能返回50%的行, 所以通常在具有惟一性或选择性高的列或列集上创建索引。   索引的选择性越小,被使用的 机会就越少,查询优化器根据索引 的选择性,决定使用哪个索引。对 于选择性低的索引,查询优化器会 用表扫描替代索引,因为表扫描实 际上会很快地返回数据。表扫描是 一页一页的按一定次序地将表读入内存,而基于索引的数据检索首先读入索引项,然后按照索引的顺序,跟随指针在表中检索数据页,后者将比 前者花更长的时间。因此,如果结果集在整个表中占有很大比例的话,那么查询优化器将选择进行表扫描操作。不具备惟一值的列,一般来说不值得去索引,如籍贯列或是否见习列的索引效率就不高。 二、短列索引   短列要比长列索引好,因为索 引键越短,在页面存储的索引记录就越多,索引层次就越少,I/O操作 就越少,数据检索的速度就越快。 三、大表索引   大表的数据存储要占用许多页,表扫描时I/O操作花时间多,索引可以减少I/O操作次数,明显提高查询速度。小表不值得去索引,因为它们只占有一至二页,如果它们 频繁地被引用或查询,它们可能已经被存储在高速缓存中了,而索引却不得不在一个特定的页面。 四、定长列索引   定长列索引要比可变长列索引更利于索引文件的存储,但

文档评论(0)

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

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

1亿VIP精品文档

相关文档