查詢沒有使用繫結變數的sql zt
1. Jametong
減產前40個字元相同, 有多於5個不同sql版本的sql語句^_^
select substr(sqltext,1,40) sql_text,count(*)
from v$sql
group by substr(sqltext,1,40)
having count(*) >= 5;
2. husthxd
定位應該使用繫結變數的sql語句
SELECT substr(sql_text,1,40) "SQL",
count(*) ,
sum(executions) "TotExecs"
FROM v$sqlarea
WHERE executions < 5
GROUP BY substr(sql_text,1,40)
HAVING count(*) > 30
ORDER BY 2
/
40表示sql語句的前40個字元是一樣的,5表示執行次數小於5次,30表示在shared_pool_size中出現不下30次。
3. Yong Huang:
quote:
--------------------------------------------------------------------------------
最初由 jametong 釋出
減產前40個字元相同, 有多於5個不同sql版本的sql語句^_^
select substr(sqltext,1,40) sql_text,count(*)
from v$sql
group by substr(sqltext,1,40)
having count(*) >= 5;
--------------------------------------------------------------------------------
That's a commonly suggested method to find SQLs not using bind variables.
Its shortcoming is obvious; how do you know 40 is enough or too much?
I have another way. For queries,
select sql_text from v$sql where upper(sql_text) like 'SELECT%WHERE%'
and sql_text not like '%:%' order by 1;
Change SELECT to other keywords. This approach is based on the fact
that SQLs using bind variables have colons in them. But the shortcoming
is that it will miss bad SQLs like this:
select * from myreport where msg like 'Today: good%' and msg_type = 123;
So, there's no absolutely perfect way. You get the idea.
Yong Huang
4. biti_rainy:
我的習慣,如果不是極度繁忙的系統,一般允許做如下操作
set line 1500
set pagesize 0
spool sql.txt
select sql_text,executions,... from v$sqlarea order by sql_text;
spool off;
我可能在幾個有代表性的時間點做這個操作,然後統計出來對比
通常這可能有上萬條sql,不過這不要緊,在 urltraedit or execel 中很容易看出來的,順著往下一拉,一目瞭然,大量沒有繫結而類似的sql,有幾十條或者幾百條的,你一下子就能感覺到的,類似的sql沒有繫結,有多少句,分別大致執行了多少次,很容易就統計出來了。這就是我的 笨辦法 你可能以為這很累,實際上我在半小時之內就幾乎能統計好大部分沒有繫結的sql。
另外,繫結的sql,在v$sqlarea 中,是用佔位符號的(和你的繫結變數的定義符號無關),可能形式如:
select * from t where ... col1 = :1 ... col2 = :a ...
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/82387/viewspace-1022025/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- V$sql查詢未使用繫結變數的語句SQL變數
- Oracle中如何查詢未使用繫結變數的SQL語句?Oracle變數SQL
- [20210112]完善查詢繫結變數指令碼bind_cap.txt變數指令碼
- SQL Server解惑——查詢條件IN中能否使用變數SQLServer變數
- 在繫結變數下使用outline變數
- Microsoft SQL Server 2005中查詢優化器使用的統計資訊二(zt)ROSSQLServer優化
- Microsoft SQL Server 2005中查詢優化器使用的統計資訊一(zt)ROSSQLServer優化
- Microsoft SQL Server 2005中查詢優化器使用的統計資訊三(zt)ROSSQLServer優化
- SQL查詢總結SQL
- 透過v$sql_bind_capture 檢視繫結變數。SQLAPT變數
- 如何在對in操作使用變數繫結(轉)變數
- 使用sql語句查詢平均值,使用sql語句查詢資料總條數, not in 篩選語句的使用SQL
- Sql Server 的引數化查詢SQLServer
- 查詢最近幾天的登陸數量,沒有數量的補零
- PB帶引數帶結果集的動態SQL查詢SQL
- SQL Server索引查詢/掃描沒有出現key lookup的案例淺析SQLServer索引
- SQL查詢的:子查詢和多表查詢SQL
- Oracle資料傾斜導致的問題-有繫結變數Oracle變數
- 查詢最近幾天每日的登陸數量,沒有數量的補零
- 透過手機號查詢繫結QQ
- 使用Mybatis-plus進行分頁查詢,沒有分頁效果,查詢的資料量超出每頁數量設定MyBatis
- 如何用FGA得到繫結變數的值變數
- MySQL高階特性——繫結變數MySql變數
- [20180930]in list與繫結變數.txt變數
- [20180912]PLSLQ與繫結變數.txt變數
- Vue select 繫結動態變數Vue變數
- [20180930]in list與繫結變數個數.txt變數
- [20210120]in list與繫結變數個數.txt變數
- 抽象SQL引數化查詢VK抽象SQL
- React跟Vue不同 沒有雙向繫結ReactVue
- 在檔案上使用 SQL 查詢的示例SQL
- SQL單表查詢語句總結SQL
- 【ORACLE】Oracle繫結變數知識梳理Oracle變數
- 繫結變數窺視測試案例變數
- Java 中如何使用 SQL 查詢 TXTJavaSQL
- Oracle總結【SQL細節、多表查詢、分組查詢、分頁】OracleSQL
- C++ 變數型別查詢C++變數型別
- 連表操作、子查詢、pymysql 模組、sql注入問題(感覺已沒有)MySql
- 輿情繫統查詢