91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

sql查找未使用綁定變量的語句

發布時間:2021-09-14 12:47:04 來源:億速云 閱讀:218 作者:chen 欄目:關系型數據庫

本篇內容主要講解“sql查找未使用綁定變量的語句”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“sql查找未使用綁定變量的語句”吧!

一、查找方法:

從ORACLE10G開始,V$SQL視圖中增加列FORCE_MATCHING_SIGNATURESignature used when the CURSOR_SHARING parameter is set to FORCE;(當CURSOR_SHARING參數設置成FORCE時,產生的執行計劃是一樣的)

測試1:cursor_sharing值為EXACT

SQL>  show parameter cursor_sharing;

 

NAME                           TYPE           VALUE

------------------------------------ ----------- ---------------------

cursor_sharing                    string           EXACT

SQL>SELECT /*john*/* from bas.john  where name='曹定芳';

 

SQL>SELECT /*john*/* from bas.john  where name='張杰雄';

    

SQL>SELECT /*john*/* from bas.john  where name='練為斌';

select sql_text,FORCE_MATCHING_SIGNATURE,EXACT_MATCHING_SIGNATURE from v$sql twhere sql_text like'%john%';

 

SQL_TEXT                                              FORCE_MATCHING_SIGNATURE     EXACT_MATCHING_SIGNATURE    

----------------------------------------------------   ---------------------      -----------------------------

SELECT /*john*/* from bas.john  where name='曹定芳'    1.58728914732591E19         8.65016113461197E18

SELECT /*john*/* from bas.john  where name='張杰雄'    1.58728914732591E19         1.55664749687513E19

SELECT /*john*/* from bas.john  where name='練為斌'    1.58728914732591E19         6.34382341893161E18        

測試1說明:當name值不一樣的時候FORCE_MATCHING_SIGNATURE的值相同,而EXACT_MATCHING_SIGNATURE值不同,說明在cursor_sharing=force時,執行計劃可共用;cursor_sharing=exact時,執行計劃不可共用;我們使用綁定變量后,同樣也可以達到執行計劃共用的效果;

測試2:cursor_sharing值為FORCE

1、執行語句:alter system set cursor_sharing=force;

SQL> alter system set cursor_sharing=force;

 

System altered.

 

SQL> show parameter cursor_sharing;

 

NAME                           TYPE          VALUE

---------------------------       ---------    -----------

cursor_sharing                 string          FORCE

 

SQL> alter system flush shared_pool;

 

System altered.

2、同樣執行三條查詢語句

SQL>SELECT /*john*/* from bas.john  where name='曹定芳';

 

SQL>SELECT /*john*/* from bas.john  where name='張杰雄';

 

SQL>SELECT /*john*/* from bas.john  where name='練為斌';

3、查找V$SQL的語句情況

select sql_text,FORCE_MATCHING_SIGNATURE,EXACT_MATCHING_SIGNATURE from v$sql t where sql_text like '%john%';

SQL_TEXT                                              FORCE_MATCHING_SIGNATURE     EXACT_MATCHING_SIGNATURE    

----------------------------------------------------   ---------------------      -----------------------------

SELECT /*john*/* from bas.john  where name=:"SYS_B_0"    1.58728914732591E19         1.58728914732591E19      

測試2說明:當我們把cursor_sharing設置為force后,發現語句執行計劃共用了,并且自動使用綁定變量(此時v$sql視圖中只查詢到一條與之相關的語句)。

測試3、cursor_sharing值為EXACT,但使用綁定變量

1、執行語句:alter system set cursor_sharing=EXACT;

SQL> alter system set cursor_sharing=force;

 

System altered.

 

SQL> show parameter cursor_sharing;

 

NAME                           TYPE          VALUE

---------------------------       ---------    -----------

cursor_sharing                 string          EXACT

 

SQL> alter system flush shared_pool;

 

System altered.

2、使用綁定變量查詢

SQL>SELECT /*john*/* from bas.john  where name=:a;    

3、查找V$SQL的語句情況

select sql_text,FORCE_MATCHING_SIGNATURE,EXACT_MATCHING_SIGNATURE from v$sql twhere sql_text like'%john%';

 

SQL_TEXT                                              FORCE_MATCHING_SIGNATURE     EXACT_MATCHING_SIGNATURE    

----------------------------------------------------   ---------------------      -----------------------------

SELECT /*john*/* from bas.john  where name=:a           1.4513622515145E19        1.4513622515145E19

測試3總結:當我們把cursor_sharing設置為EXACT后,并通過綁定變量查詢,發現語句執行計劃共用了;

二、解決方法

通過以上測試已經了解:如果V$SQL里面的FORCE_MATCHING_SIGNATURE值一樣的SQL語句,那么就可以通過綁定變量來進行相應的優化了。

select to_char(FORCE_MATCHING_SIGNATURE) as FORCE_MATCHING_SIGNATURE, count(1) as counts

from v$sql

where FORCE_MATCHING_SIGNATURE>0 and FORCE_MATCHING_SIGNATURE <> EXACT_MATCHING_SIGNATURE

group by FORCE_MATCHING_SIGNATURE

having count(1) > &a

order by 2 desc;

到此,相信大家對“sql查找未使用綁定變量的語句”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

sql
AI

和硕县| 德令哈市| 大关县| 高安市| 定南县| 喜德县| 新邵县| 军事| 平定县| 紫云| 浠水县| 陇南市| 旬邑县| 江都市| 镇远县| 锡林郭勒盟| 泾源县| 满洲里市| 崇州市| 沙河市| 南阳市| 南丹县| 康马县| 阳高县| 维西| 县级市| 麦盖提县| 揭西县| 个旧市| 会宁县| 芒康县| 凉山| 陇西县| 丹巴县| 栾川县| 漠河县| 隆林| 金昌市| 磐石市| 六枝特区| 莎车县|