WITH AS and materialize hints
加--+materialize提示,Oracle會先將查詢結果寫入一張臨時表,然再查詢臨時表。
WITH AS: 就是將一個子查詢部分獨立出來,有時候是為了提高SQL語句的可讀性,有時候是為了提高SQL語句效能。
如果一個SQL語句中,某個表會被訪問多次,而且每次訪問的限制條件一樣的話,就可以使用with as來提高效能。
注意:如果 with as 短語沒有被呼叫2次以上,CBO就不會將 with as短語獲取的資料放入temp表,如果想要將資料放入temp表需要使用materialize hint
如果 with as 短語被呼叫了2次以上,CBO會自動將 with as 短語的資料放入一個臨時表,這個時候不用寫materialize hint
舉個例子(本例基於Scott使用者)
SQL> explain plan for with a as (select /*+ materialize */ ename,job,deptno from emp where sal>(select avg(sal) from emp)) select * from a ;
Explained.
SQL> select * from table(dbms_xplan.display);
去掉 /*+ materialize */ ,由於只訪問了一次a,所以CBO不會將a的查詢結果生成一個臨時表
SQL> explain plan for with a as (select ename,job,deptno from emp where sal>(select avg(sal) from emp)) select * from a ;
Explained.
SQL> select * from table(dbms_xplan.display);
如上:WITH AS 語句呼叫一次 使用多次需要寫hints。
繼續測試:
SQL> explain plan for with a as (select ename,job,deptno from emp where sal>(select avg(sal) from emp)) select * from a union all select * from a;
Explained.
SQL> select * from table(dbms_xplan.display);
充分證明 :
1.當with as 語句沒有被呼叫2次以上時,如果需要訪問多次,那麼需要加hints /*+ materialize */
2.如果with as 語句被呼叫2次以上時,自動會將 with as 短語的資料放入一個臨時表,這個時候不用寫materialize hint.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25583515/viewspace-2871458/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Materialize快速入門教程
- Oracle HintsOracle
- 淺談在 Laravel 中使用 MaterializeLaravel
- 【譯】Resource Hints
- Using hints for PostgresqlSQL
- Oracle Hints詳解Oracle
- oracle hints的使用Oracle
- Oracle Hints的用法Oracle
- oracle hints index格式OracleIndex
- Oracle使用提示(Hints)Oracle
- MySQL index hints 使用MySqlIndex
- HTTP Client Hints 介紹HTTPclient
- Common LISP Hints 中文Lisp
- oracle hints用法總結Oracle
- Hints : DRIVING_SITE
- hints提示總結 zt
- Oracle Hints語句的用法Oracle
- oracle hints的那點事Oracle
- How to use hints in Oracle sql for performanceOracleSQLORM
- oracle hints ? use_hash ? ordered ?Oracle
- oracle效能優化之--hintsOracle優化
- oracle sql tunning all hintsOracleSQL
- [20140121]with+提示Materialize.txt
- Pycharm,Python 3 與 Type HintsPyCharmPython
- Python -型別提示 Type HintsPython型別
- UVa340 - Master-Mind HintsAST
- Oracle leading vs. ordered hintsOracle
- [20221130]with+materialize會產生日誌嗎.txt
- 【最佳化】hints之/*+append*/作業APP
- oracle 體系 & hints的用法總結(轉)Oracle
- 轉載--常見hints的基礎用法
- Python Type Hints 從入門到實踐Python
- 前端效能優化 - Resource Hints 資源預載入前端優化
- 加快insert into select速度with hints and nologging
- SQL優化--用各種hints優化一條SQLSQL優化
- “no_merge”hints優化檢視訪問低效問題優化
- PHPStorm2017去掉引數提示 parameter name hintsPHPORM
- 【sql調優之執行計劃】使用hint(四)Hints for JoinSQL