历史的执行计划找到一个合理的执行计划进行绑定
1. 存在多个执行计划的语句,按照索引是比较合适的,FULL SCAN不合适
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
|
存在两个执行计划,使之后的SQL语句都走Plan hash value: 1404472509 处理模
2、运行coe_xfr_sql_profile脚本来绑定
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
|
执行COE_XFR_SQL_PROFILE_4hpk08j31nm7y_1404472509
3、再此重新执行语句
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
SQL profile coe_4hpk08j31nm7y_1404472509 used for this statement,说明sql profile已经绑定上,执行计划已这个为最佳,为止绑定处理
以下例子中sql语句走的是全表扫描,没有走索引,构造一个走索引的语句,来替换全表扫描执行计划
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
执行现存在的coe_xfr_sql_profile
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
|
查看构造SQL的走索引执行计划coe_xfr_sql_profile
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
查看次构造SQL的coe_xfr_sql_profile
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
|
查看coe_xfr_sql_profile_2hdyvqk9b09va_1404472509.sql信息,需要替换的是这段内容
h := SYS.SQLPROF_ATTR( q'[BEGIN_OUTLINE_DATA]', q'[IGNORE_OPTIM_EMBEDDED_HINTS]', q'[OPTIMIZER_FEATURES_ENABLE('11.2.0.3')]', q'[DB_VERSION('11.2.0.3')]', q'[OPT_PARAM('optimizer_dynamic_sampling' 0)]', q'[OPT_PARAM('optimizer_index_cost_adj' 500)]', q'[ALL_ROWS]', q'[OUTLINE_LEAF(@"SEL$1")]', q'[INDEX_RS_ASC(@"SEL$1" "EMP"@"SEL$1" ("EMP"."DEPTNO"))]', q'[END_OUTLINE_DATA]');
把这个内容替换到coe_xfr_sql_profile_4hpk08j31nm7y_3956160932.sql 中
h := SYS.SQLPROF_ATTR( q'[BEGIN_OUTLINE_DATA]', q'[IGNORE_OPTIM_EMBEDDED_HINTS]', q'[OPTIMIZER_FEATURES_ENABLE('11.2.0.3')]', q'[DB_VERSION('11.2.0.3')]', q'[OPT_PARAM('optimizer_dynamic_sampling' 0)]', q'[OPT_PARAM('optimizer_index_cost_adj' 500)]', q'[ALL_ROWS]', q'[OUTLINE_LEAF(@"SEL$1")]', q'[FULL(@"SEL$1" "EMP"@"SEL$1")]', q'[END_OUTLINE_DATA]');
这段信息后,执行coe_xfr_sql_profile_4hpk08j31nm7y_3956160932.sql 这个脚本
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
|
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
偷梁换柱成功,固定执行so easy
提供脚本文件COE_XFR_SQL_PROFILE.SQL
COE_XFR_SQL_PROFILE
参考《基于SQL的优化》
本文发布于:2024-01-30 02:16:24,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170655218818521.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |