优化器指令
优化器指令的熏染
优化器针对每个查询角力计较争论最优查询妄想。纵然优化器运用了少量统计信息,一些情况下依然无法做出最佳的决策。要重写优化器决策,您可以运用优化器指令来强迫优化器运用指定的查询妄想。
优化器指令语法
优化器指令往往针对以后查询的范围。要查抄指令的任务体式花式,您可以运用 SET EXPLAIN ON
获得查询妄想。要禁用指令,您可以在情况中设定 IFX_DIRECTIVE 0
,也可以在 onconfig
中设置 DIRECTIVE 0
。
优化器指令运用有效的正文指示符作为离开符。其中搜罗:
- { 施展分析入手脱手离开符,} 施展分析终了离开符
- /* 施展分析入手脱手离开符,而 */ 施展分析终了离开符
- --(两个短划线)施展分析入手脱手离开符;无需运用终了离开符
在离开符之后,每条指令的第一个字符必需是 号(加号)。优化器指令紧跟在 SELECT
、INSERT
和 UPDATE
关头字反面。
清单 11. 优化器指令示例
SELECT -- <Directive> customer_name from customer where customer_num > 103
指令搜罗以下几种范例:
- 接见体例指令:这些指令描摹优化器搜刮表的体式花式。示例搜罗
INDEX <indexname>
、AVOID_FULL
和AVOID_INDEX <indexname>
。
- 毗连挨次(Join-order)指令:毗连挨次指令
ORDERED
强迫优化器根据查询中运用的挨次运用表。
毗连体例(Join-method)指令:
毗连体例指令在嵌套循环和散列毗连之间终了选择。其中USE_NL
和AVOID_NL
用于嵌套循环毗连,而USE_HASH
和AVOID_HASH
用于散列毗连。
- 优化目标(Optimization-goal)指令:优化目标指令指定查询机能的衡量体例。指令搜罗
ALL_ROWS
和FIRST_ROWS
。FIRST_ROWS
只前往第一个屏幕,其中显露查询前往的行。
- 解释形式(Explain-mode)指令:解释形式指令用于测试和调试查询妄想,并将信息输入到 sqexplain.out 文件。
EXPLAIN
基础上与SET EXPLAIN ON
类似。AVOID_EXECUTE
仅仅实行查询妄想,而不实行查询本身。这一特性使您不必比及查询完成绩可以相识查询妄想可否吻合您的需求,在措置责罚年夜型表时等候查询完成将花消良多工夫。
- 重写体例(Rewrite-method)指令:默许情况下,优化器不答应实行非嵌套的关系子查询。
NESTED
关头字可克制运用非嵌套子查询重写查询。
版权声明: 原创作品,答应转载,转载时请务必以超链接体例标明文章 原始来因 、作者信息和本声明。不然将追究法律责任。