Oracle Explain Plan,hint解释与示例
?
Oracle 專業(yè)dba博客:http://blog.csdn.net/tianlesoftware
?
Hint 是Oracle 提供的一種SQL語法,它允許用戶在SQL語句中插入相關的語法,從而影響SQL的執(zhí)行方式。
因為Hint的特殊作用,所以對于開發(fā)人員不應該在代碼中使用它,Hint 更像是Oracle提供給DBA用來分析問題的工具 。在SQL代碼中使用Hint,可能導致非常嚴重的后果,因為數(shù)據(jù)庫的數(shù)據(jù)是變化的,在某一時刻使用這個執(zhí)行計劃是最優(yōu)的,在另一個時刻,卻可能很差,這也是CBO 取代RBO的原因之一,規(guī)則是死的,而數(shù)據(jù)是時刻變化的,為了獲得最正確的執(zhí)行計劃,只有知道表中數(shù)據(jù)的實際情況,通過計算各種執(zhí)行計劃的成本,則其最優(yōu),才是最科學的,這也是CBO的工作機制。 在SQL代碼中加入Hint,特別是性能相關的Hint是很危險的做法。
參考:Oracle Hint
hint格式:/*+ ? ? ? ?*/
FULL Hint
該Hint告訴優(yōu)化器對指定的表通過全表掃描的方式訪問數(shù)據(jù)。
示例:
?????????SQL> select /*+full(dave) */ * from dave;
?
要注意,如果表有別名,在hint里也要用別名,?這點在前面已經(jīng)說明。
?
?
Explain Plan執(zhí)行計劃是用于查看sql每個執(zhí)行步驟情況信息的一個優(yōu)化工具系列之一。
如果要分析某條SQL的性能問題,通常我們要先看SQL的執(zhí)行計劃,看看SQL的每一步執(zhí)行是否存在問題。 如果一條SQL平時執(zhí)行的好好的,卻有一天突然性能很差,如果排除了系統(tǒng)資源和阻塞的原因,那么基本可以斷定是執(zhí)行計劃出了問題。
看懂執(zhí)行計劃也就成了SQL優(yōu)化的先決條件。 這里的SQL優(yōu)化指的是SQL性能問題的定位,定位后就可以解決問題。
參考:Oracle 執(zhí)行計劃(Explain Plan) 說明
使用SQL
SQL>EXPLAIN PLAN FOR sql語句;
SQL>SELECT plan_table_output FROM TABLE(DBMS_XPLAN.DISPLAY('PLAN_TABLE'));
示例:
SQL>?EXPLAIN PLAN FOR SELECT * FROM DAVE;
已解釋。
SQL>?SELECT plan_table_output FROM TABLE(DBMS_XPLAN.DISPLAY('PLAN_TABLE'));
或者:
SQL>??select * from table(dbms_xplan.display);
?
?
關于Oracle優(yōu)化器,參考:
?????????Oracle Optimizer CBO RBO
http://blog.csdn.net/tianlesoftware/archive/2010/08/19/5824886.aspx
?
轉載于:https://www.cnblogs.com/svennee/p/4165331.html
總結
以上是生活随笔為你收集整理的Oracle Explain Plan,hint解释与示例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言中指针的地址和内容
- 下一篇: 2020年亚太杯数学建模竞赛赛题