Oracle索引用法大总结,好处与坏处,优点与缺

上传人:z**** 文档编号:127578456 上传时间:2022-07-30 格式:DOC 页数:23 大小:54KB
收藏 版权申诉 举报 下载
Oracle索引用法大总结,好处与坏处,优点与缺_第1页
第1页 / 共23页
Oracle索引用法大总结,好处与坏处,优点与缺_第2页
第2页 / 共23页
Oracle索引用法大总结,好处与坏处,优点与缺_第3页
第3页 / 共23页
资源描述:

《Oracle索引用法大总结,好处与坏处,优点与缺》由会员分享,可在线阅读,更多相关《Oracle索引用法大总结,好处与坏处,优点与缺(23页珍藏版)》请在装配图网上搜索。

1、Oracle 索引用法大总结,好处与坏处,优点与缺点索引使用的好处与坏处(Oracle)分类: OracleDB?创建索引的好处-帮助用户提高查询速度-利用索引的唯一性来控制记录的唯一性-可以加速表与表之间的连接-降低查询中分组和排序的时间?创建索引的坏处-存储索引占用磁盘空间-执行数据修改操作(INSERT、UPDATE、DELETE)产生索引维护索引是提高数据查询最有效的方法,也是最难全面掌握的技术,因为正确 的索引可能使效率提高10000倍,而无效的索引可能是浪费了数据库空间, 甚至大大降低查询性能。索引的管理成本1、存储索引的磁盘空间2、执行数据修改操作(INSERT、UPDATE、D

2、ELETE)产生的索引维护3、在数据处理时回需额外的回退空间。实际数据修改测试:一个表有字段A、B、C,同时进行插入10000行记录测试在没有建索引时平均完成时间是 2.9 秒在对 A 字段建索引后平均完成时间是 6.7 秒在对 A 字段和 B 字段建索引后平均完成时间是 10.3 秒在对A字段、B字段和C字段都建索引后平均完成时间是11.7秒从以上测试结果可以明显看出索引对数据修改产生的影响 索引按存储方法分类B*树索引B*树索引是最常用的索引,其存储结构类似书的索引结构,有分支和叶两种类型的存储数据块,分支块相当于书的大目录,叶块相当于索引到的具体的书页。一般索引及唯一约束索引都使用B*树

3、索引。位图索引位图索引储存主要用来节省空间,减少ORACLE对数据块的访问,它采用位图偏移方式来与表的行ID号对应,采用位图索引一般是重复值太多的表字段。位图索引在实际密集型OLTP(数据事务处理)中用得比较少,因 为 OLTP 会对表进行大量的删除、修改、新建操作, ORACLE 每次进行操作 都会对要操作的数据块加锁,所以多人操作很容易产生数据块锁等待甚至 死锁现象。在OLAP(数据分析处理)中应用位图有优势,因为OLAP中大部 分是对数据库的查询操作,而且一般采用数据仓库技术,所以大量数据采 用位图索引节省空间比较明显。索引按功能分类唯一索引唯一索引有两个作用,一个是数据约束,一个是数据

4、索引,其中数据 约束主要用来保证数据的完整性,唯一索引产生的索引记录中每一条记录 都对应一个唯一的 ROWID。主关键字索引主关键字索引产生的索引同唯一索引,只不过它是在数据库建立主关 键字时系统自动建立的。一般索引一般索引不产生数据约束作用,其功能主要是对字段建立索引表,以提高数据查询速度。索引按索引对象分类单列索引(表单个字段的索引) 多列索引(表多个字段的索引) 函数索引(对字段进行函数运算的索引) 建立函数索引的方法:create index 收费日期索引 on GC_DFSS(trunc(sk_rq)create index 完全客户编号索引 on yhzl(qc_bh|kh_bh)

5、在对函数进行了索引后,如果当前会话要引用应设置当前会话的query_rewrite_enabled 为 TRUE。alter session set query_rewrite_enabled=true注:如果对用户函数进行索引的话,那用户函数应加上 deterministic参数,意思是函数在输入值固定的情况下返回值也固定。例:create or replace function trunc_add(input_date date)return date deterministicasbeginreturn trunc(input_date+1);end trunc_add;应用索引的扫描分

6、类INDEX UNIQUE SCAN(按索引唯一值扫描)select * from zl_yhjbqk where hbs_bh='5420016000'INDEX RANGE SCAN(按索弓I值范围扫描)select * from zl_yhjbqk where hbs_bh>'5420016000'select * from zl_yhjbqk where qc_bh>'7001'INDEX FAST FULL SCAN(按索引值快速全部扫描)select hbs_bh from zl_yhjbqk order by hbs_b

7、hselect count(*) from zl_yhjbqkselect qc_bh from zl_yhjbqk group by qc_bh 什么情况下应该建立索弓表的主关键字自动建立唯一索弓如 zl_yhjbqk( 用户基本情况 ) 中的 hbs_bh( 户标识编号)表的字段唯一约束ORACLE 利用索引来保证数据的完整性如lc_hj(流程环节)中的lc_bh+hj_sx(流程编号+环节顺序) 直接条件查询的字段在 SQL 中用于条件约束的字段如zl_yhjbqk(用户基本情况)中的qc_bh(区册编号)select * from zl_yhjbqk where qc_bh=7001

8、查询中与其它表关联的字段字段常常建立了外键关系如zl_ydcf(用电成份)中的jldb_bh(计量点表编号)andselect * from zl_ydcf a,zl_yhdb b where a.jldb_bh=b.jldb b.jldb_bh=540100214511查询中排序的字段排序的字段如果通过索引去访问那将大大提高排序速度select * from zl_yhjbqk order by qc_bh(建立 qc_bh 索弓I)select * from zl_yhjbqk where qc_bh='7001' order by cb_sx(建立qc_bh+cb_sx索

9、引,注:只是一个索引,其中包括qc_bh和cb_sx字段)查询中统计或分组统计的字段select max(hbs_bh) from zl_yhjbqkselect qc_bh,count(*) from zl_yhjbqk group by qc_bh什么情况下应不建或少建索引表记录太少如果一个表只有5条记录,采用索引去访问记录的话,那首先需访问索引表,再通过索引表访问数据QC_BH 返回了结果,这就是通过索引直接返回结 果的方法。如何重建索引alter index 表电量结果表主键 rebuild如何快速新建大数据量表的索引如果一个表的记录达到 100 万以上的话,要对其中一个字段建索引可

10、能要花很长的时间,甚至导致服务器数据库死机,因为在建索引的时候 ORACLE 要将索引字段所有的内容取出并进行全面排序,数据量大的话可 能导致服务器排序内存不足而引用磁盘交换空间进行,这将严重影响服务 器数据库的工作。解决方法是增大数据库启动初始化中的排序内存参数, 如果要进行大量的索引修改可以设置10M以上的排序内存(ORACLE缺省大 小为64K),在索引建立完成后应将参数修改回来,因为在实际OLTP数据 库应用中一般不会用到这么大的排序内存。一、为什么要创建索引呢(优点)? 这是因为,创建索引可以大大提高系统的性能。 第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 第二

11、,可以大大加快数据的检索速度,这也是创建索引的最主要的原因。 第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面 特别有意义。第四,在使用分组和排序子句进行数据检索时,同样可以显著减少查询中 分组和排序的时间。第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统 的性能。二、建立方向索引的不利因素(缺点) 也许会有人要问:增加索引有如此多的优点,为什么不对表中的每一个列 创建一个索引呢?这种想法固然有其合理性,然而也有其片面性。虽然, 索引有许多优点,但是,为表中的每一个列都增加索引,是非常不明智的。 这是因为,增加索引也有许多不利的一个方面。第一,创建索引和维护索引

12、要耗费时间,这种时间随着数据量的增加而增 加。第二,索引需要占物理空间,除了数据表占数据空间之外,每一个索引还 要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。 第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维 护,这样就降低了数据的维护速度。三、创建方向索引的准则索引是建立在数据库表中的某些列的上面。因此,在创建索引的时候,应 该仔细考虑在哪些列上可以创建索引,在哪些列上不能创建索引。 一般来说,应该在这些列上创建索引。第一,在经常需要搜索的列上,可以加快搜索的速度;第二,在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构 第三,在经常用在连接的列上,

13、这些列主要是一些外键,可以加快连接的速度; 第四,在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序, 其指定的范围是连续的; 第五,在经常需要排序的列上创建索引,因为索引已经排序,这样查询可 以利用索引的排序,加快排序查询时间;第六,在经常使用在 WHERE 子句中的列上面创建索引,加快条件的判断 速度。同样,对于有些列不应该创建索引。一般来说,不应该创建索引的的这些 列具有下列特点:第一,对于那些在查询中很少使用或者参考的列不应该创建索引。这是因 为,既然这些列很少使用到,因此有索引或者无索引,并不能提高查询速 度。相反,由于增加了索引,反而降低了系统的维护速度和增大了空间需 求。

14、第二,对于那些只有很少数据值的列也不应该增加索引。这是因为,由于 这些列的取值很少,例如人事表的性别列,在查询的结果中,结果集的数 据行占了表中数据行的很大比例,即需要在表中搜索的数据行的比例很大 增加索引,并不能明显加快检索速度。第三,对于那些定义为 text, image 和 bit 数据类型的列不应该增加索引。 这是因为,这些列的数据量要么相当大,要么取值很少。第四,当修改性能远远大于检索性能时,不应该创建索引。这是因为,修 改性能和检索性能是互相矛盾的。当增加索引时,会提高检索性能,但是 会降低修改性能。当减少索引时,会提高修改性能,降低检索性能。因此, 当修改性能远远大于检索性能时,

15、不应该创建索引。四、创建索引的方法 创建索引有多种方法,这些方法包括直接创建索引的方法和间接创建索引 的方法。第一,直接创建索引,例如使用CREATE INDEX语句或者使用创建索引向导。第二,间接创建索引,例如在表中定义主键约束或者唯一性键约束时,同 时也创建了索引。虽然,这两种方法都可以创建索引,但是,它们创建索引的具体内容是有 区别的。使用CREATE INDEX语句或者使用创建索引向导来创建索引,这是最基本的索引创建方式,并且这种方法最具有柔性,可以定制创建出符合自己需要的索引。在使用这种方式创建索引时,可以使用许多选项,例如指定数据 页的充满度、进行排序、整理统计信息等,这样可以优化

16、索引。使用这种 方法,可以指定索引的类型、唯一性和复合性,也就是说,既可以创建聚 簇索引,也可以创建非聚簇索引,既可以在一个列上创建索引,也可以在 两个或者两个以上的列上创建索引。通过定义主键约束或者唯一性键约束,也可以间接创建索引。主键约束是一种保持数据完整性的逻辑,它限制表中的记录有相同的主键记录。在创建主键约束时,系统自动创建了一个唯一性的聚簇索引。虽然,在逻辑上,主键约束是一种重要的结构,但是,在物理结构上,与主键约束相对应的结构是唯一性的聚簇索引。换句话说,在物理实现上,不存在主键约束,而只存在唯一性的聚簇索引。同样,在创建唯一性键约束时,也同时创建了索引,这种索引则是唯一性的非聚簇

17、索引。因此,当使用约束创 建索引时,索引的类型和特征基本上都已经确定了,由用户定制的余地比 较小。当在表上定义主键或者唯一性键约束时,如果表中已经有了使用 CREATEINDEX 语句创建的标准索引时,那么主键约束或者唯一性键约束创建的索 引覆盖以前创建的标准索引。也就是说,主键约束或者唯一性键约束创建 的索引的优先级高于使用CREATE INDEX语句创建的索引。五、索引的特征索引有两个特征,即唯一性索引和复合索引。唯一性索引保证在索引列中的全部数据是唯一的,不会包含冗余数据。如 果表中已经有一个主键约束或者唯一性键约束,那么当创建表或者修改表 时,SQL Server自动创建一个唯一性索引

18、。然而,如果必须保证唯一性, 那么应该创建主键约束或者唯一性键约束,而不是创建一个唯一性索引。 当创建唯一性索引时,应该认真考虑这些规则:当在表中创建主键约束或 者唯一性键约束时, SQL Server 自动创建一个唯一性索引;如果表中已经 包含有数据,那么当创建索引时,SQL Server检查表中已有数据的冗余性; 每当使用插入语句插入数据或者使用修改语句修改数据时, SQL Server 检 查数据的冗余性:如果有冗余值,那么 SQL Server 取消该语句的执行,并 且返回一个错误消息;确保表中的每一行数据都有一个唯一值,这样可以 确保每一个实体都可以唯一确认;只能在可以保证实体完整性

19、的列上创建 唯一性索引,例如,不能在人事表中的姓名列上创建唯一性索引,因为人 们可以有相同的姓名。复合索引就是一个索引创建在两个列或者多个列上。在搜索时,当两个或 者多个列作为一个关键值时,最好在这些列上创建复合索引。当创建复合 索引时,应该考虑这些规则:最多可以把 16 个列合并成一个单独的复合 索引,构成复合索引的列的总长度不能超过900字节,也就是说复合列的 长度不能太长;在复合索引中,所有的列必须来自同一个表中,不能跨表 建立复合列;在复合索引中,列的排列顺序是非常重要的,因此要认真排 列列的顺序,原则上,应该首先定义最唯一的列,例如在( COL1, COL2)上的索引与在(C0L2,

20、 C0L1)上的索引 是不相同的,因为两个索引的列的顺序不同;为了使查询优化器使用复合 索引,查询语句中的 WHERE 子句必须参考复合索引中第一个列;当表中 有多个关键列时,复合索引是非常有用的;使用复合索引可以提高查询性 能,减少在一个表中所创建的索引数量。六、索引的类型根据索引的顺序与数据表的物理顺序是否相同,可以把索引分成两种类型 一种是数据表的物理顺序与索引顺序相同的聚簇索引,另一种是数据表的 物理顺序与索引顺序不相同的非聚簇索引。七、聚簇索引的体系结构索引的结构类似于树状结构,树的顶部称为叶级,树的其它部分称为非叶 级,树的根部在非叶级中。同样,在聚簇索引中,聚簇索引的叶级和非叶

21、级构成了一个树状结构,索引的最低级是叶级。在聚簇索引中,表中的数 据所在的数据页是叶级,在叶级之上的索引页是非叶级,索引数据所在的 索引页是非叶级。在聚簇索引中,数据值的顺序总是按照升序排列。应该在表中经常搜索的列或者按照顺序访问的列上创建聚簇索引。当创建 聚簇索引时,应该考虑这些因素:每一个表只能有一个聚簇索引,因为表 中数据的物理顺序只能有一个;表中行的物理顺序和索引中行的物理顺序 是相同的,在创建任何非聚簇索引之前创建聚簇索引,这是因为聚簇索引 改变了表中行的物理顺序,数据行按照一定的顺序排列,并且自动维护这 个顺序;关键值的唯一性要么使用 UNIQUE 关键字明确维护,要么由一个 内部

22、的唯一标识符明确维护,这些唯一性标识符是系统自己使用的,用户 不能访问;聚簇索引的平均大小大约是数据表的百分之五,但是,实际的 聚簇索引的大小常常根据索引列的大小变化而变化;在索引的创建过程中 SQL Server 临时使用当前数据库的磁盘空间,当创建聚簇索引时,需要 1.2 倍的表空间的大小,因此,一定要保证有足够的空间来创建聚簇索引。当系统访问表中的数据时,首先确定在相应的列上是否存在有索引和该索 引是否对要检索的数据有意义。如果索引存在并且该索引非常有意义,那 么系统使用该索引访问表中的记录。系统从索引开始浏览到数据,索引浏 览则从树状索引的根部开始。从根部开始,搜索值与每一个关键值相比

23、较, 确定搜索值是否大于或者等于关键值。这一步重复进行,直到碰上一个比 搜索值大的关键值,或者该搜索值大于或者等于索引页上所有的关键值为 止。八、非聚簇索引的体系结构 非聚簇索引的结构也是树状结构,与聚簇索引的结构非常类似,但是也有 明显的不同。在非聚簇索引中,叶级仅包含关键值,而没有包含数据行。非聚簇索引表示行的逻辑顺序。非聚簇索引有两种体系结构:一种体系结构是在没有聚簇索引的表上创建非聚簇索引,另一种体系结构是在有聚簇索引的表上创建非聚簇索引。如果一个数据表中没有聚簇索引,那么这个数据表也称为数据堆。当非聚 簇索引在数据堆的顶部创建时,系统使用索引页中的行标识符指向数据页 中的记录。行标识

24、符存储了数据所在位置的信息。数据堆是通过使用索引 分配图(1AM)页来维护的。IAM页包含了数据堆所在簇的存储信息。在 系统表 sysindexes 中,有一个指针指向了与数据堆相关的第一个 IAM 页。 系统使用 IAM 页在数据堆中浏览和寻找可以插入新的记录行的空间。这些 数据页和在这些数据页中的记录没有任何的顺序并且也没有链接在一起。 在这些数据页之间的唯一的连接是 IAM 中记录的顺序。当在数据堆上创建 了非聚簇索引时,叶级中包含了指向数据页的行标识符。行标识符指定记 录行的逻辑顺序,由文件ID、页号和行ID组成。这些行的标识符维持唯 一性。非聚簇索引的叶级页的顺序不同于表中数据的物理

25、顺序。这些关键 值在叶级中以升序维持。当非聚簇索引创建在有聚簇索引的表上的时候,系统使用索引页中的指向 聚簇索引的聚簇键。聚簇键存储了数据的位置信息。如果某一个表有聚簇 索引,那么非聚簇索引的叶级包含了映射到聚簇键的聚簇键值,而不是映 射到物理的行标识符。当系统访问有非聚簇索引的表中数据时,并且这种 非聚簇索引创建在聚簇索引上,那么它首先从非聚簇索引来找到指向聚簇 索引的指针,然后通过使用聚簇索引来找到数据。当需要以多种方式检索数据时,非聚簇索引是非常有用的。当创建非聚簇 索引时,要考虑这些情况:在缺省情况下,所创建的索引是非聚簇索引; 在每一个表上面,可以创建不多于 249 个非聚簇索引,而

26、聚簇索引最多只 能有一个。系统如何访问表中的数据 一般地,系统访问数据库中的数据,可以使用两种方法:表扫描和索引查 找。第一种方法是表扫描,就是指系统将指针放置在该表的表头数据所在 的数据页上,然后按照数据页的排列顺序,一页一页地从前向后扫描该表 数据所占有的全部数据页,直至扫描完表中的全部记录。在扫描时,如果 找到符合查询条件的记录,那么就将这条记录挑选出来。最后,将全部挑 选出来符合查询语句条件的记录显示出来。第二种方法是使用索引查找。 索引是一种树状结构,其中存储了关键字和指向包含关键字所在记录的数 据页的指针。当使用索引查找时,系统沿着索引的树状结构,根据索引中 关键字和指针,找到符合

27、查 询条件的的记录。最后,将全部查找到的符合查询语句条件的记录显示出 来。在 SQL Server 中,当访问数据库中的数据时,由 SQL Server 确定该表中是 否有索引存在。如果没有索引,那么SQL Server使用表扫描的方法访问数 据库中的数据。查询处理器根据分布的统计信息生成该查询语句的优化执 行规划,以提高访问数据的效率为目标,确定是使用表扫描还是使用索引。九、索引的选项在创建索引时,可以指定一些选项,通过使用这些选项,可以优化索引的 性 能 。 这 些 选 项 包 括 FILLFACTOR 选 项 、 PAD_INDEX 选 项 和 SORTED_DATA_REORG 选项。

28、使用FILLFACTOR选项,可以优化插入语句和修改语句的性能。当某个索引 页变满时, SQL Server 必须花费时间分解该页,以便为新的记录行腾出空 间。使用 FILLFACTOR 选项,就是在叶级索引页上分配一定百分比的自由空 间,以便减少页的分解时间。当在有数据的表中创建索引时,可以使用 FILLFACTOR 选项指定每一个叶级索引节点的填充的百分比。缺省值是 0, 该数值等价于 100。在创建索引的时候,内部索引节点总是留有了一定的 空间,这个空间足够容纳一个或者两个表中的记录。在没有数据的表中, 当创建索引的时候,不要使用该选项,因为这时该选项是没有实际意义的。 另外,该选项的数

29、值在创建时指定以后,不能动态地得到维护,因此,只 应该在有数据的表中创建索引时才使用。PAD_INDEX选项将FILLFACTOR选项的数值同样也用于内部的索引节点,使 内部的索引节点的填充度与叶级索引的节点中的填充度相同。如果没有指 定 FILLFACTOR 选项,那么单独指定 PAD_INDEX 选项是没有实际意义的,这 是因为 PAD_INDEX 选项的取值是由 FILLFACTOR 选项的取值确定的。 当创建聚簇索引时,SORTED_DATA_REORG选项清除排序,因此可以减少建 立聚簇索引所需要的时间。当在一个已经变成碎块的表上创建或者重建聚 簇索引时,使用 SORTED_DATA

30、_REORG 选项可以压缩数据页。当重新需要 在索引上应用填充度时,也使用该选项。当使用 SORTED_DATA_REORG 选 项时,应该考虑这些因素: SQ L Server 确认每一个关键值是否比前一个关 键值高,如果都不高,那么不能创建索引;SQL Server要求1.2倍的表空间 来物理地重新组织数据;使用 SORTED_DATA_REORG 选项,通过清除排序 进程而加快索引创建进程;从表中物理地拷贝数据;当某一个行被删除时, 其所占的空间可以重新利用;创建全部非聚簇索引;如果希望把叶级页填 充到一定的百分比,可以同时使用FILLFACTOR选项和SORTED_DATA_REORG

31、 选项。十、索引的维护 为了维护系统性能,索引在创建之后,由于频繁地对数据进行增加、删除、 修改等操作使得索引页发生碎块,因此,必须对索引进行维护。使用 DBCC SHOWCONTIG 语句,可以显示表的数据和索引的碎块信息。当 执行 DBCC SHOWCONTIG 语句时, SQL Server 浏览叶级上的整个索引页,来 确定表或者指定的索引是否严重碎块。DBCC SHOWCONTIG语句还能确定 数据页和索引页是否已经满了。当对表进行大量的修改或者增加大量的数 据之后,或者表的查询非常慢时,应该在这些表上执行 DBCC SHOWCONTIG 语句。当执行 DBCC SHOWCONTIG

32、语句时,应该考虑这些因素:当执行 DBCC SHOWCONTIG 语句时, SQL Server 要求指定表的 ID 号或者索引的 ID 号,表 的 ID 号或者索引的 ID 号可以从系统表 sysindexes 中得到;应该确定多长 时间使用一次 DBCC SHOWCONTIG 语句,这个时间长度要根据表的活动情 况来定,每天、每周或者每月都可以。使用 DBCC DBREINDEX 语句重建表的一个或者多个索引。当希望重建索引 和当表上有主键约束或者唯一性键约束时,执行 DBCC DBREINDEX 语句。除此之外,执行 DBCC DBREINDEX 语句还可以重新组织叶级索引页的存储 空间

33、、删除碎块和重新计算索引统计。当使用执行 DBCC DBREINDEX 语句 时,应该考虑这些因素:根据指定的填充度,系统重新填充每一个叶级页; 使用 DBCC DBREINDEX 语句重建主键约束或者唯一性键约束的索引;使用 SORTED_DATA_REORG选项可以更快地创建聚簇索引,如果没有排列关键值, 那么不能使用DBCC DBREINDEX语句;DBCC DBREINDEX语句不支持系统表。 另外,还可以使用数据库维护规划向导自动地进行重建索引的进程。统计信息是存储在SQL Server中的列数据的样本。这些数据一般地用于索 引列,但是还可以为非索引列创建统计。SQL Server维

34、护某一个索引关键 值的分布统计信息,并且使用这些统计信息来确定在查询进程中哪一个索 引是有用的。查询的优化依赖于这些统计信息的分布准确度。查询优化器 使用这些数据样本来决定是使用表扫描还是使用索引。当表中数据发生变 化时, SQL Server 周期性地自动修改统计信息。索引统计被自动地修改, 索引中的关键值显著变化。统计信息修改的频率由索引中的数据量和数据 改变量确定。例如,如果表中有10000 行数据, 1000行数据修改了,那么 统计信息可能需要修改。然而,如果只有 50 行记录修改了,那么仍然保 持当前的统计信息。除了系统自动修改之外,用户还可以通过执行 UPDATE STATISTI

35、CS语句或者sp_updatestats系统存储过程来手工修改统计信息。使 用UPDATE STATISTICS语句既可以修改表中的全部索引,也可以修改指定的 索引。使用SHOWPLAN和STATISTICS IO语句可以分析索引和查询性能。使用这些语句可以更好地调整查询和索引。 SHOWPLAN 语句显示在连接表中使用的查询优化器的每一步以及表明使用哪一个索引访问数据。使用SHOWPLAN语句可以查看指定查询的查 询规划。当使用SHOWPLAN语句时,应该考虑这些因素SET SHOWPLAN_ALL 语句返回的输出结果比SET SHOWPLAN_TEXT语句返回的输出结果详细。然 而,应用程

36、序必须能够处理 SET SHOWPLAN_ALL 语句返回的输出结果。 SHOWPLAN语句生成的信息只能针对一个会话。如果重新连接SQL Server, 那么必须重新执行SHOWPLAN语句。STATISTICS IO语句表明输入输出的数 量,这些输入输出用来返回结果集和显示指定查询的逻辑的和物理的 I/O 的信息。可以使用这些信息来确定是否应该重写查询语句或者重新设计索 引。使用STATISTICS IO语句可以查看用来处理指定查询的I/O信息。就象 SHOWPLAN 语句一样,优化器隐藏也用来调整查询性能。优化器隐藏 可以对查询性能提供较小的改进,并且如果索引策略发生了改变,那么这 种优

37、化器隐藏就毫无用处了。因此,限制使用优化器隐藏,这是因为优化 器隐藏更有效率和更有柔性。当使用优化器隐藏时,考虑这些规则:指定 索引名称、当 index_id 为 0 时为使用表扫描、当 index_id 为 1时为使用聚 簇索引;优化器隐藏覆盖查询优化器,如果数据或者环境发生了变化,那 么必须修改优化器隐藏。十一、索引调整向导 索引调整向导是一种工具,可以分析一系列数据库的查询语句,提供使用 一系列数据库索引的建议,优化整个查询语句的性能。对于查询语句,需 要指定下列内容:查询语句,这是将要优化的工作量 包含了这些表的数据库,在这些表中,可以创建索引,提高查询性能。 在分析中使用的表在分析中

38、,考虑的约束条件,例如索引可以使用的最大磁盘空间这里指的工作量,可以来自两个方面:使用SQL Server捕捉的轨迹和包含 了 SQL 语句的文件。索引调整向导总是基于一个已经定义好的工作量。如 果一个工作量不能反映正常的操作,那么它建议使用的索引不是实际的工 作量上性能最好的索引。索引调整向导调用查询分析器,使用所有可能的 组合评定在这个工作量中每一个查询语句的性能。然后,建议在整个工作 量上可以提高整个查询语句的性能的索引。如果没有供索引调整向导来分 析的工作量,那么可以使用图解器立即创建它。一旦决定跟踪一条正常数 据库活动的描述样本,向导能够分析这种工作量和推荐能够提高数据库工 作性能的索引配置。索引调整向导对工作量进行分析之后,可以查看到一系列的报告,还可以 使该向导立即创建所建议的最佳索引,或者使这项工作成为一种可以调度 的作业,或者生成一个包含创建这些索引的 SQL 语句的文件。索引调整向导允许为 SQL Server 数据库选择和创建一种理想的索引组合和统计,而不要求对数据库结构、工作量或者 SQL Server

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!