[20240309]利用FORCE_MATCHING_SIGNATURE字段定位有问题的sql语句.txt

来源:这里教程网 时间:2026-03-03 19:40:01 作者:

[20240309]利用FORCE_MATCHING_SIGNATURE字段定位有问题的sql语句.txt --//前天遇到一个问题,使用tpt ash_index_helperz.sql查询时,我发现有一个表ATF_YPXX存在全表扫描. 1.环境: SYS@127.0.0.1:9014/ywdb> @ver1 PORT_STRING                    VERSION        BANNER ------------------------------ -------------- -------------------------------------------------------------------------------- x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production 2.问题: SYS@127.0.0.1:9014/ywdb> @ash/ash_index_helperz % PORTAL_HIS.ATF_YPXX &day 1 0 "plan_card<=10 and TABLE_ROWS>=100 " -- Santa's Little (Index) Helper BETA v0.5 - by Tanel Poder ( https://tanelpoder.com ) @ ash/ash_index_helper <sql_id|%> <owner.table_name|owner.%|%.table_name|%> <fromtime> <totime> <1|0|''> <1|0|''> <<filters> PREDICATES                                                  SECONDS     AAS CPU   WAIT  Accessed_Table       Plan_Operation                           PLAN_CARD   TABLE_ROWS   FILTER_PCT    SQL_EXECS ELA_SEC/EXEC SQL_ID        MODULE1 ----------------------------------------------------------- ------- ------- ----- ----- -------------------- -------------------------------------------------- ------------ ------------ ------------ ------------ ------------- --------------------  [F:] ("A"."OCC_TIME"='2024-03-07 13:00:00' AND "A"."P_ID"=       1      .0 100%    0%  ATF_YPXX             TABLE ACCESS FULL [PORTAL_HIS.ATF_YPXX]          1      3024446 .00003306391            1        0.811 dxvrdhd7yf5g7 python.exe  [F:] ("A"."OCC_TIME"='2024-03-07 07:00:00' AND "A"."P_ID"=       1      .0 100%    0%  ATF_YPXX             TABLE ACCESS FULL [PORTAL_HIS.ATF_YPXX]          1      3024446 .00003306391            1        0.841 44w85gabjjxdb python.exe  [F:] ("A"."OCC_TIME"='2024-03-07 13:00:00' AND "A"."P_ID"=       1      .0 100%    0%  ATF_YPXX             TABLE ACCESS FULL [PORTAL_HIS.ATF_YPXX]          1      3024446 .00003306391            1        0.924 d57pxua28f2gp python.exe  [F:] ("A"."OCC_TIME"='2024-03-07 13:00:00' AND "A"."P_ID"=       1      .0 100%    0%  ATF_YPXX             TABLE ACCESS FULL [PORTAL_HIS.ATF_YPXX]          1      3024446 .00003306391            1        0.896 dab5cwfj8hm3u python.exe  [F:] ("A"."OCC_TIME"='2024-03-07 13:00:00' AND "A"."P_ID"=       1      .0 100%    0%  ATF_YPXX             TABLE ACCESS FULL [PORTAL_HIS.ATF_YPXX]          1      3024446 .00003306391            1        0.940 g20cxsz8gr32j python.exe  [F:] ("A"."OCC_TIME"='2024-03-07 13:00:00' AND "A"."P_ID"=       1      .0 100%    0%  ATF_YPXX             TABLE ACCESS FULL [PORTAL_HIS.ATF_YPXX]          1      3024446 .00003306391            1        0.955 79mmmqpkjtzu3 python.exe  [F:] ("A"."OCC_TIME"='2024-03-07 13:00:00' AND "A"."P_ID"=       1      .0 100%    0%  ATF_YPXX             TABLE ACCESS FULL [PORTAL_HIS.ATF_YPXX]          1      3024446 .00003306391            1        0.897 58tx6x83wukph python.exe 7 rows selected. SYS@127.0.0.1:9014/ywdb> @ sql_id 58tx6x83wukph --SQL_ID = 58tx6x83wukph select b.ysyzbh yzbxh, a.p_id, a.occ_time, b.lsbz, b.tzsj   from atf_ypxx a, zy_bqyz b  where a.yzxh = b.jlxh    and a.drug_code in ('12916F2011','15173F1531')    and a.p_id = '60286060'    and a.occ_time = '2024-03-07 13:00:00'    and (tzsj is null or        to_date(a.occ_time, 'yyyy-mm-dd hh24:mi:ss') < b.tzsj) ; --//语句非常类似!!没有使用绑定变量,执行次数仅仅1次,每次大约0.8XX秒,表ATF_YPXX有1G,因为执行次数少导致awr报表无法发现。并 --//且tpt ashtop一般情况下很难发现,感觉最近一段时间修改或者增加代码导致. --//优化很简单,建立p_id,occ_time的复合索引. --//这样引出一个问题,这类语句没有使用绑定变量,仅仅执行1次,查看v$active_session_history视图存在force_matching_signature字 --//段,但是没有EXACT_MATCHING_SIGNATURE字段,如何通过tpt ashtop.sql脚本收集这些仅仅执行几次,FORCE_MATCHING_SIGNATURE相同的sql语句. --//看了一下感觉使用ashtop.sql脚本有点难度,首先必须先知道force_matching_signature的值. --//自己写一个脚本先收集force_matching_signature相同的信息: $ cat fms.sql -- Copyright 2023 lfree. All rights reserved. -- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms and conditions. -------------------------------------------------------------------------------- -- -- File name:  fms.sql  v1.0 -- Purpose:    Query gv$active_session_history Force_Matching_Signature the same, sql_id different of information -- Author:     lfree -- -- Usage: --    @ fms <count(*)_number> <display_record_number> <fromtime> <totime> --   <count(*)_number>=2> -- -- Example: --    @ fms 5 30 &day -- -- Other: --     This script uses only the in-memory GV$ACTIVE_SESSION_HISTORY, use --     @dfms.sql for accessiong the DBA_HIST_ACTIVE_SESS_HISTORY archive -- -------------------------------------------------------------------------------- WITH a1 AS (SELECT sql_id,force_matching_signature, count(*) cnt1   FROM gv$active_session_history  WHERE force_matching_signature <> 0 AND sample_time BETWEEN &3 AND &4  GROUP BY sql_id, force_matching_signature ) ,     a2 AS (SELECT force_matching_signature, count(*) cnt2,sum(cnt1) total_seconds   FROM a1  GROUP BY force_matching_signature HAVING count(*) >=  &&1  ORDER BY 3 desc) SELECT force_matching_signature, cnt2,total_seconds   FROM a2  WHERE rownum <= &2; $ cat dfms.sql -- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms and conditions. -------------------------------------------------------------------------------- -- -- File name:  dfms.sql  v1.0 -- Purpose:    Query dba_hist_active_sess_history Force_Matching_Signature the same, sql_id different of information -- Author:     lfree -- -- Usage: --    @ idfms <count(*)_number> <display_record_number> <fromtime> <totime> --   <count(*)__number>=2> -- -- Example: --    @ fms 5 30 &day -- -- Other: --     This script uses only the DBA_HIST_ACTIVE_SESS_HISTORY --     @ fms.sql for accessiong the in-memory GV$ACTIVE_SESSION_HISTORY -- -------------------------------------------------------------------------------- WITH a1 AS (SELECT sql_id,force_matching_signature, count(*) cnt1   FROM dba_hist_active_sess_history  WHERE force_matching_signature <> 0 AND sample_time BETWEEN &3 AND &4 and dbid = (SELECT d.dbid FROM v$database d)  GROUP BY sql_id,force_matching_signature ) ,     a2 AS (SELECT force_matching_signature, count(*) cnt2,sum(cnt1)*10 total_seconds   FROM a1  GROUP BY force_matching_signature HAVING count(*) >= &&1  ORDER BY 3 desc) SELECT force_matching_signature, cnt2,total_seconds   FROM a2  WHERE rownum <= &2; 3.测试看看: SYS@127.0.0.1:9014/ywdb> @ fms.sql 2 10 &day FORCE_MATCHING_SIGNATURE       CNT2 TOTAL_SECONDS ------------------------ ---------- -------------     12120531484079936454       1301          1994      8680396602758190538        999          1241      4330757809746298095          3          1134     13026426528625086727        569           921      6490285911540139840        334           450      2672114946588399948          3           404      7809763007758332172        191           244      8968795636694904691        123           189      3375334192428958452          4           184     15582081887848190096         94           156 10 rows selected. --//注:有一些CNT2很小,可能是非常频繁执行sql语句,比如FORCE_MATCHING_SIGNATURE=4330757809746298095 --//这些语句的FORCE_MATCHING_SIGNATURE相同,在应用中频繁执行,看到TOTAL_SECONDS会很高.往往不需要关注. SYS@127.0.0.1:9014/ywdb> select distinct sql_text  from v$sql where FORCE_MATCHING_SIGNATURE=4330757809746298095; SQL_TEXT ------------------------------------------------------------ select count ( 0 ) from BSOFT_TEST_CONNECT select count ( :"SYS_B_0" ) from BSOFT_TEST_CONNECT select count ( 1 ) from BSOFT_TEST_CONNECT --//应用用来判断是否连上的情况. SYS@127.0.0.1:9014/ywdb> @ ashtop sql_id FORCE_MATCHING_SIGNATURE=12120531484079936454 &day       Total                                                                         Distinct Distinct   Seconds     AAS %This   SQL_ID        FIRST_SEEN          LAST_SEEN           Execs Seen  Tstamps --------- ------- ------- ------------- ------------------- ------------------- ---------- --------         7      .0    0% | 2633ab5rbtsmx 2024-03-07 10:05:34 2024-03-07 22:47:10          1        7         7      .0    0% | at0rwvy9jukny 2024-03-07 09:52:01 2024-03-08 07:40:26          1        7         7      .0    0% | ata0cjw5hcfdn 2024-03-07 09:53:51 2024-03-07 23:15:56          7        7         7      .0    0% | bn7nur60fmsz2 2024-03-07 10:14:28 2024-03-07 21:08:27          2        7         7      .0    0% | cksbjtxp82by5 2024-03-07 09:27:36 2024-03-07 21:39:25          1        7         6      .0    0% | 1xfaz7bpmy0f0 2024-03-07 13:18:50 2024-03-08 08:14:52          1        6         5      .0    0% | 0nrxtxrw7ykjs 2024-03-07 19:49:57 2024-03-08 05:58:05          1        5         5      .0    0% | 0sjpmdjzpxgud 2024-03-07 11:22:31 2024-03-07 17:26:41          1        5         5      .0    0% | 1dc6yungr22zs 2024-03-07 09:31:13 2024-03-07 16:10:20          1        5         5      .0    0% | 39cyjtzh0un8x 2024-03-07 10:43:19 2024-03-08 06:00:46          1        5         5      .0    0% | 3bbj5akntxg0m 2024-03-07 17:22:05 2024-03-08 06:14:45          1        5         5      .0    0% | 5rbyatk1uw381 2024-03-07 15:14:36 2024-03-08 06:35:41          2        5         5      .0    0% | 6938fq89qgd7b 2024-03-07 15:11:20 2024-03-08 06:51:03          1        5         5      .0    0% | 78t8bh12vv8nx 2024-03-07 11:03:15 2024-03-07 21:01:50          1        5         5      .0    0% | 7pkt6t3m2s6b1 2024-03-07 10:44:56 2024-03-07 16:09:03          1        5         5      .0    0% | 7rsxz4cdz48qx 2024-03-07 09:51:41 2024-03-07 23:06:23          1        5         5      .0    0% | a1tq4x1hcr5qu 2024-03-07 10:46:30 2024-03-07 21:54:04          1        5         5      .0    0% | dg3m3vp9h71v8 2024-03-07 09:48:42 2024-03-07 23:48:12          1        5         5      .0    0% | dgx7a0v4xs620 2024-03-07 18:49:02 2024-03-08 07:04:52          1        5         5      .0    0% | fkqm6f2xya397 2024-03-07 14:34:10 2024-03-07 19:26:46          1        5         4      .0    0% | 024aphnyr2hak 2024-03-07 10:21:14 2024-03-07 12:26:26          1        4         4      .0    0% | 1375jt8m2p337 2024-03-07 09:48:03 2024-03-07 17:26:55          1        4         4      .0    0% | 16m5afwdwbrru 2024-03-07 13:00:40 2024-03-07 22:06:30          1        4         4      .0    0% | 1c2rm7gjfdbz8 2024-03-07 16:07:45 2024-03-07 17:49:45          1        4         4      .0    0% | 1ysg3227zcsx2 2024-03-07 18:04:30 2024-03-08 07:36:52          1        4         4      .0    0% | 2u0gjfhvnqgsm 2024-03-07 14:14:55 2024-03-08 06:39:59          1        4         4      .0    0% | 38ynt00vyy87u 2024-03-07 09:49:08 2024-03-07 21:22:35          1        4         4      .0    0% | 3rbwyx6v97hcs 2024-03-07 13:07:45 2024-03-08 02:07:57          1        4         4      .0    0% | 4bqzqpjgt4cxn 2024-03-07 13:17:13 2024-03-07 20:26:05          1        4         4      .0    0% | 5712rtxxt04hn 2024-03-07 15:26:34 2024-03-07 19:20:36          1        4 30 rows selected. --//注:查看前面ashtop查询1天的输出,FORCE_MATCHING_SIGNATURE=12120531484079936454的记录的CNT2=1301,相当于对应出现至少1301 --//条类似的sql语句(可能有一些awr没有抓取到),造成没有必要的硬分析.前面相关ATF_YPXX表的语句已经看不到(注:已经建立了相关索 --//引) --//顺便看几条sql语句看看,一些已经不再共享池了. SYS@127.0.0.1:9014/ywdb> @ sql_id 2633ab5rbtsmx --SQL_ID = 2633ab5rbtsmx SELECT a.ksdm      , a.jgid      , a.ksmc      , b.act   FROM ms_ghks a      , (         SELECT count(1) as act, ksdm, jgid           FROM (                 SELECT MS_YYHY.HYID                      , to_char(MS_YYHY.GZRQ,'yyyymmdd') GZRQ, MS_YYHY.YYSD, MS_GHKS.KSMC, MS_YYHY.KSDM, GY_YGDM.YGXM,                      MS_YYHY.YSDM, MS_YYHY.YYBZ, MS_MZGHF.GHF, MS_MZGHF.ZLF, MS_GHKS.JGID                   FROM MS_YYHY                      , MS_GHKS                      , GY_YGDM                      , MS_YSKS                      , MS_MZGHF                  WHERE MS_YYHY.KSDM =  MS_GHKS.KSDM                    AND MS_YYHY.YSDM =  GY_YGDM.YGDM                    AND MS_YSKS.Mzks =  MS_YYHY.KSDM                    AND MS_YSKS.YSDM =  GY_YGDM.YGDM                    AND MS_YSKS.FYXH =  MS_MZGHF.FYXH                    AND MS_YYHY.TGBZ =  0                    AND MS_YYHY.YYBZ =  0                    AND MS_YYHY.NWBZ =  1                    AND MS_YYHY.GZRQ =  to_date('20240309','yyyymmdd')                    AND MS_YYHY.YSDM =  '2431'            AND MS_GHKS.KSDM in (20, 107, 4100))          group by ksdm      , jgid) b  WHERE a.ksdm       =  b.ksdm    AND a.jgid       =  b.jgid    AND a.ksdm in (20, 107, 4100)    AND a.ksdm       <> 20  order by a.jgid; SYS@127.0.0.1:9014/ywdb> @ sql_id at0rwvy9jukny --SQL_ID = at0rwvy9jukny SELECT a.ksdm      , a.jgid      , a.ksmc      , b.act   FROM ms_ghks a      , (         SELECT count(1) as act, ksdm, jgid           FROM (                 SELECT MS_YYHY.HYID                      , to_char(MS_YYHY.GZRQ,'yyyymmdd') GZRQ, MS_YYHY.YYSD, MS_GHKS.KSMC, MS_YYHY.KSDM, GY_YGDM.YGXM,                      MS_YYHY.YSDM, MS_YYHY.YYBZ, MS_MZGHF.GHF, MS_MZGHF.ZLF, MS_GHKS.JGID                   FROM MS_YYHY                      , MS_GHKS                      , GY_YGDM                      , MS_YSKS                      , MS_MZGHF                  WHERE MS_YYHY.KSDM =  MS_GHKS.KSDM                    AND MS_YYHY.YSDM =  GY_YGDM.YGDM                    AND MS_YSKS.Mzks =  MS_YYHY.KSDM                    AND MS_YSKS.YSDM =  GY_YGDM.YGDM                    AND MS_YSKS.FYXH =  MS_MZGHF.FYXH                    AND MS_YYHY.TGBZ =  0                    AND MS_YYHY.YYBZ =  0                    AND MS_YYHY.NWBZ =  1                    AND MS_YYHY.GZRQ =  to_date('20240312','yyyymmdd')                    AND MS_YYHY.YSDM =  '761'            AND MS_GHKS.KSDM in (02, 142, 4096))          group by ksdm      , jgid) b  WHERE a.ksdm       =  b.ksdm    AND a.jgid       =  b.jgid    AND a.ksdm in (02, 142, 4096)    AND a.ksdm       <> 02  order by a.jgid; --//这两条语句基本一样,差别在于GZRQ,ksdm等信息不同,当然不一定存在优化的需求。像这类语句因为没有使用绑定变量,每个的执行 --//次数不是很多,导致许多情况下遗漏了优化的工作。 --//注:这些sql语句已经不再共享池,并且DBA_HIST_SQLTEXT也没有记录,dba_hist相关视图会漏调这些信息. --//仔细看就可以发现开发很不好的编写sql风格,注意最内层.他是先写出最内层的语句然后在根据需要写出对应sql语句的,而且使用的 --//拼接代码,MS_GHKS.KSMC里层就有,根本无需要再次连接表ms_ghks a. --//自己改写如下: SELECT ms_ghks.ksdm,ms_ghks.jgid,ms_ghks.ksmc,count(1) AS act   FROM ms_yyhy, ms_ghks, gy_ygdm, ms_ysks, ms_mzghf  WHERE ms_yyhy.ksdm =  ms_ghks.ksdm    AND ms_yyhy.ysdm =  gy_ygdm.ygdm    AND ms_ysks.mzks =  ms_yyhy.ksdm    AND ms_ysks.ysdm =  gy_ygdm.ygdm    AND ms_ysks.fyxh =  ms_mzghf.fyxh    AND ms_yyhy.tgbz =  0    AND ms_yyhy.yybz =  0    AND ms_yyhy.nwbz =  1    AND ms_yyhy.gzrq =  to_date('20240312','yyyymmdd')    AND ms_yyhy.ysdm =  '761'    AND ms_ghks.ksdm IN (02, 142, 4096)    AND ms_ghks.ksdm <> 02  GROUP BY ms_ghks.ksdm,ms_ghks.jgid,ms_ghks.ksmc  ORDER BY ms_ghks.jgid --//许多表连接不知道是否多余!! SYS@127.0.0.1:9014/ywdb> select count(*) from ms_yyhy where gzrq =  to_date('20240312','yyyymmdd');     COUNT(*) ------------         1515 SYS@127.0.0.1:9014/ywdb> select count(*) from ms_yyhy where gzrq =  to_date('20240312','yyyymmdd') and ysdm =  '761';     COUNT(*) ------------            0 --//问题在于回表记录太多。 --//拿sqlh.sql脚本修改一下,建立sqlf.sql脚本 --//sqlh.sql脚本原始tpt的来源awr_sqlstats_per_exec.sql $ ls -li  tpt/awr/ | grep 3967980 3967980 -rw-r--r-- 2 oracle oinstall 3543 2024-03-11 10:28:54 awr_sqlstats_per_exec.sql 3967980 -rw-r--r-- 2 oracle oinstall 3543 2024-03-11 10:28:54 sqlh.sql $ diff sqlh.sql  sqlf.sql 60c60 < AND sql_id = '&1' --- > AND FORCE_MATCHING_SIGNATURE = '&1' --//建立sqlff.sql脚本 $ cat sqlff.sql prompt prompt time unit : millisecond prompt @awr/sqlf &1 % sysdate-&&2 sysdate --//只要建立gzrq,ysdm的复合索引,就可以大大的减少逻辑读. SYS@127.0.0.1:9014/ywdb> @ sqlff 12120531484079936454 .1 time unit : millisecond BEGIN_INTERVAL_TIME      INST_ID SQL_ID        PLAN_HASH_VALUE EXECUTIONS ELA_MS_PER_EXEC CPU_MS_PER_EXEC ROWS_PER_EXEC LIOS_PER_EXEC BLKRD_PER_EXEC IOW_MS_PER_EXEC  AVG_IOW_MS CLW_MS_PER_EXEC APW_MS_PER_EXEC CCW_MS_PER_EXEC ------------------- ------------ ------------- --------------- ---------- --------------- --------------- ------------- ------------- -------------- --------------- ----------- --------------- --------------- --------------- 2024-03-11 09:00:29            1 0cfqyzc2z73gc      1882478372          1              56              55           0.0            76              0               0         0.0               0               0               0 2024-03-11 09:00:29            1 1bssptnxvqdfq      1882478372          2               1               1           0.0            15              0               0         0.0               0               0               0 2024-03-11 09:00:29            2 1rm2ju80dfu38      1882478372          2              66              64           0.0            77              0               0         0.0               0               0               0 2024-03-11 09:00:29            1 4m37zx7agdrn6      1882478372          3               1               1           0.0            15              0               0         0.0               0               0               0 2024-03-11 09:00:29            1 5rn23fkq7chh2      1882478372          3              44              43           0.0            80              0               0         0.0               0               0               0 2024-03-11 09:00:29            1 642hkqu9hq5df      1882478372          2              39              34           0.0            44              0               0         0.0               0               0               0 2024-03-11 09:00:29            1 6f76ha6rqwpgz      1882478372          3              44              42           0.0            54              0               0         0.0               0               0               0 2024-03-11 09:00:29            1 6wffk45u6m88f      1882478372          3              67              66           0.0            75              0               0         0.0               0               0               0 2024-03-11 09:00:29            1 76mvnz67169y2      1882478372          1              56              54           0.0            78              0               0         0.0               0               0               0 2024-03-11 09:00:29            1 8x7gu978vsw4w      1882478372          1             100              92           0.0            76              0               0         0.0               0               0               0 2024-03-11 09:00:29            1 abnvpwudu7czc      1882478372          2              41              40           0.0            46              0               0         0.0               0               0               0 2024-03-11 09:00:29            2 anq94ugchz254      1882478372          4              66              65           0.0            77              0               0         0.0               0               0               0 2024-03-11 09:00:29            1 ata0cjw5hcfdn      1882478372        322               1               0           0.0            19              0               0         0.0               0               0               0 2024-03-11 09:00:29            2 ata0cjw5hcfdn      1882478372        276               1               1           0.0            20              0               0         0.0               0               0               0 2024-03-11 09:00:29            1 aya87adsgwtws      1882478372          4              56              53           0.0            62              0               0         0.0               0               0               0 2024-03-11 09:00:29            2 c4jvyf9dhc1y8      1882478372          3              26              25           0.0            36              0               0         0.0               0               0               0 2024-03-11 09:00:29            1 c7s8w9jr95srx      1882478372          3              66              64           0.0            77              0               0         0.0               0               0               0 2024-03-11 09:00:29            1 ctxhvbu26pt5u      1882478372          3              63              60           0.0            75              0               0         0.0               0               0               0 2024-03-11 09:00:29            1 djcx68hgy4pzq      1882478372          4              72              67           0.0            77              0               0         0.0               0               0               0 2024-03-11 09:00:29            1 fqscmr0bq8tzm      1882478372          1              58              56           0.0            77              0               0         0.0               0               0               0 20 rows selected. --//dba_hist_sqlstat 在0.1天就记录这么多(真是的情况是许多没有记录)。如果查询1天就很多了,并且有点奇怪的是 --//ROWS_PER_EXEC=0,到底什么情况,索引存在回表,但是逻辑读并不是很高7X。 SYS@127.0.0.1:9014/ywdb> select sum(executions) from gv$sqlarea where FORCE_MATCHING_SIGNATURE=12120531484079936454; SUM(EXECUTIONS) ---------------          391015 SYS@127.0.0.1:9014/ywdb> host sleep 60 SYS@127.0.0.1:9014/ywdb> select sum(executions) from gv$sqlarea where FORCE_MATCHING_SIGNATURE=12120531484079936454; SUM(EXECUTIONS) ---------------          391033 SYS@127.0.0.1:9014/ywdb> host sleep 60 SYS@127.0.0.1:9014/ywdb> select sum(executions) from gv$sqlarea where FORCE_MATCHING_SIGNATURE=12120531484079936454; SUM(EXECUTIONS) ---------------          391074 --//1分钟内有XX次的执行,不理解!! --//建立如下索引: CREATE INDEX PORTAL_HIS.i_MS_YYHY_GZRQ_YSDM ON PORTAL_HIS.MS_YYHY (GZRQ, YSDM) LOGGING STORAGE    (             BUFFER_POOL      DEFAULT             FLASH_CACHE      DEFAULT             CELL_FLASH_CACHE DEFAULT            ) NOPARALLEL COMPRESS 1 COMPUTE STATISTICS / --//将另外的GZRQ索引先INVISIBLE观察看看一段时间,我想通过这个例子说明没有绑定变量结果有可能漏掉需要优化的sql语句。 --//我将上面提到的FORCE_MATCHING_SIGNATURE的sql语句看了一遍,基本都是上面类似的sql语句。 --//这些sql语句不做优化问题也不大,但是执行频率很高,没有合理的使用绑定变量导致在优化时出现遗漏的情况。

相关推荐