1 / 16
文档名称:

HINT提高SQL语句的执行效率.doc

格式:doc   页数:16页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

HINT提高SQL语句的执行效率.doc

上传人:xxj16588 2016/6/23 文件大小:0 KB

下载得到文件列表

HINT提高SQL语句的执行效率.doc

相关文档

文档介绍

文档介绍:HINT 提高 SQL 语句的执行效率运用 HINT 提高 SQL 语句的执行效率 hints 是 oracle 提供的一种机制,用来告诉优化器按照我们的告诉它的方式生成执行计划。我们可以用 hints 来实现: 1) 使用的优化器的类型 2) 基于代价的优化器的优化目标,是 all_rows 还是 first_rows 。 3) 表的访问路径, 是全表扫描, 还是索引扫描, 还是直接利用 rowid 。 4) 表之间的连接类型 5) 表之间的连接顺序 6) 语句的并行程度 1 、写 HINT 目的手工指定 SQL 语句的执行计划 hints 是 oracle 提供的一种机制,用来告诉优化器按照我们的告诉它的方式生成执行计划。我们可以用 hints 来实现: 1) 使用的优化器的类型 2) 基于代价的优化器的优化目标,是 all_rows 还是 first_rows 。 3) 表的访问路径, 是全表扫描, 还是索引扫描, 还是直接利用 rowid 。 4) 表之间的连接类型 5) 表之间的连接顺序 6) 语句的并行程度 2、 HINT 可以基于以下规则产生作用表连接的顺序、表连接的方法、访问路径、并行度 3、 HINT 应用范围 dml 语句查询语句 4 、语法+ hint [text] [hint[text]]... or --+ hint [text] [hint[text]]... 如果语(句)法不对,则 ORACLE 会自动忽略所写的 HINT ,不报错 5 、指定优化器模式的 HINT RULE :不管是否有统计信息,都将采用基于规则进行优化; CHOOSE : 只要被访问的数据中有一个表有统计信息, 就将采用基于代价的方式进行优化; FIRST_ROWS : 不管是否有统计信息, 都将采用基于代价的方式进行优化,其优化目标是最快响应时间; ALL_ROWS : 不管是否有统计信息, 都将采用基于代价的方式进行优化, 其优化目标是最大吞吐量; 例子: 尽快地显示前 10 行记录 select + first_rows(10) from emp where deptno=10; 6 、指定访问路径的 HINT FULL 执行全表扫描+ FULL ( table ) ROID 根据 ROWID 进行扫描+ ROWID ( table ) INDEX 根据某个索引进行扫描+ INDEX ( table [index [index]...] ) select + index(emp ind_emp_sal) from emp where deptno=200 and sal300; 如果写了多个,则 ORACLE 自动选择最优的哪个 select + index(emp ind_emp_sal ind_emp_deptno) from emp where deptno=200 and sal300; INDEX_JOIN 如果所选的字段都是索引字段( 是几个索引的) ,那么可以通过索引连接就可访问到数据,而不需要访问表的数据。+ INDEX_JOIN ( table [index [index ...]] ) select + index_join(emp ind_emp_sal ind_emp_deptno) deptno,sal from emp where deptno=20; INDEX_FFS 执行快速全索引扫描+ INDEX_FFS ( table [index [index]...] ) select + index_ffs(emp pk_emp) count() from emp; NO_INDEX 指定不使用哪些索引+ NO_INDEX ( table [index [index]...] ) select + no_index(emp ind_emp_sal ind_emp_deptno) from emp where deptno=200 and sal300; AND_EQUAL 指定合并两个或以上索引检索的结果( 交集), 最多不能超过5个+ AND_EQUAL ( table index index [index] [index] [index] ) 7 、指定表的连接顺序 ORDERED 按表出现的顺序进行连接+ ORDERED select +ordered , from dept,emp where =; select +ordered , from emp,dept where =; 8 、指定表的连接操作 USE_NL 按 nes