一、SQLT背景介绍
二、SQLT家族简介
三、SQLT宝剑出鞘
SQL text:
select *
from test1
where test1.status in (select test2.status from test2
where object_name like 'PRC_TEST%');
dingjun123@ORADB> select status,count(*)
2 from test1
3 group by status;
STATUS COUNT(*)
------- ----------
INVALID 6
VALID 76679
--子查询结果是INVALID
dingjun123@ORADB> select test2.status from test2
2 where object_name like 'PRC_TEST%'
3 ;
STATUS
-------
INVALID
dingjun123@ORADB> @sqltxtrxec
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.00
Parameter 1:
SQL_ID or HASH_VALUE of the SQL to be extracted (required)
Enter value for 1: aak402j1r6zy3
Paremeter 2:
SQLTXPLAIN password (required)
Enter value for 2: XXXXXX
Value passed to sqltxtrxec:
SQL_ID_OR_HASH_VALUE: "aak402j1r6zy3"
SQL> @coe_xfr_sql_profile.sql
SQL_ID (required)
Enter value for 1: 0hzkb6xf08jhw
PLAN_HASH_VALUE AVG_ET_SECS
--------------- -----------
3071332600 .006 --效率高的计划
40103161 653
Parameter 2: ---------------次数输入需要绑定的PLAN_HASH_VALUE,显然我们输入3071332600
PLAN_HASH_VALUE (required)
Enter value for 2:
最后生成文件,执行。
注意:如果SQL没有使用绑定变量,需要将生成文件的force_match => FALSE中的FALSE改成TRUE。
select/*+
BEGIN_OUTLINE_DATA
USE_NL(@"SEL$5DA710D3" "TEST1"@"SEL$1")
LEADING(@"SEL$5DA710D3" "TEST2"@"SEL$2" "TEST1"@"SEL$1")
INDEX_RS_ASC(@"SEL$5DA710D3" "TEST2"@"SEL$2" ("TEST2"."OBJECT_NAME"))
INDEX_RS_ASC(@"SEL$5DA710D3" "TEST1"@"SEL$1" ("TEST1"."STATUS"))
OUTLINE(@"SEL$2")
OUTLINE(@"SEL$1")
UNNEST(@"SEL$2")
OUTLINE_LEAF(@"SEL$5DA710D3")
ALL_ROWS
DB_VERSION('11.2.0.3')
OPTIMIZER_FEATURES_ENABLE('11.2.0.3')
IGNORE_OPTIM_EMBEDDED_HINTS
END_OUTLINE_DATA
*/ *
dingjun123@ORADB> @coe_load_sql_profile
ORIGINAL_SQL_ID (required)
Parameter 2:
MODIFIED_SQL_ID (required)
Enter value for 2: 6rbnw92d7djwk
-------------------- --------------------
313848035 .001
Parameter 3:
Enter value for 3: 313848035
Values passed to coe_load_sql_profile:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ORIGINAL_SQL_ID: "aak402j1r6zy3"
MODIFIED_SQL_ID: "6rbnw92d7djwk"
PLAN_HASH_VALUE: "313848035"
…
SELECT
*
FROM (SELECT A.ID, A.TEL_ID, A.PRE_CATE_ID, A.INSERT_TIME, A.REMARK1
FROM TAB_BN_TEST_LOG A,
(SELECT TEL_ID, MIN(INSERT_TIME) AS INSERT_TIME
FROM TAB_BN_TEST_LOG
WHERE INSERT_TIME > '08-APR-19'
AND ID NOT IN
(SELECT IMEI FROM TX_MM_LOG_201907 WHERE TID = '10')
GROUP BY TEL_ID) B
WHERE A.TEL_ID = B.TEL_ID
AND A.INSERT_TIME = B.INSERT_TIME
AND A.ID NOT IN
ORDER BY INSERT_TIME)
WHERE ROWNUM < 200
上一篇:换种监控姿势:基于深度学习+流处理的时序告警系统 下一篇:Redis中五大数据结构的底层实现