通過dbms_mviewdbms_mview.explain_rewrite檢測為什麼不使用查詢重寫的問題
先建立一個物化檢視使用最簡單的語法來建立
create materialized view sales_customers_products as SELECT p.prod_category, c.country_id, sum(s.quantity_sold) AS quantity_sold, sum(s.amount_sold) AS amount_sold FROM sh.sales s, sh.customers c, sh.products p WHERE s.cust_id = c.cust_id AND s.prod_id = p.prod_id and c.country_id='Ruddy' GROUP BY p.prod_category, c.country_id ORDER BY p.prod_category, c.country_id; /
建立rewrite_table表
SQL> @d:/oracle/product/10.2.0/db_1/rdbms/admin/utlxrw.sql
Table created
檢查查詢重寫的引數設定
SQL> show parameter query
NAME TYPE VALUE
------------------------------------ ----------- -----------------
query_rewrite_enabled string TRUE
query_rewrite_integrity string enforced
SQL> DECLARE 2 l_query CLOB := 'SELECT p.prod_category, c.country_id, 3 sum(s.quantity_sold) AS quantity_sold, 4 sum(s.amount_sold) AS amount_sold 5 FROM sh.sales s, sh.customers c, sh.products p 6 WHERE s.cust_id = c.cust_id 7 AND s.prod_id = p.prod_id 8 GROUP BY p.prod_category, c.country_id 9 ORDER BY p.prod_category, c.country_id'; 10 BEGIN 11 dbms_mview.explain_rewrite( 12 query => l_query, 13 mv => 'sales_customers_products', 14 statement_id => '42' 15 ); 16 END; 17 / PL/SQL procedure successfully completed; SQL> select message from rewrite_table; MESSAGE ------------------------------------------------------------------- QSM-01150: 未重寫查詢 QSM-01052: 表的引用完整性約束條件 PRODUCTS 在 ENFORCED 完整性模式中無效 QSM-01026: 對 SALES_CUSTOMERS_PRODUCTS 禁用查詢重寫 /
SQL>drop materialized view sales_customers_products ; 下面在建立物化檢視時啟用查詢重寫
create materialized view sales_customers_products ENABLE QUERY REWRITE as SELECT p.prod_category, c.country_id, sum(s.quantity_sold) AS quantity_sold, sum(s.amount_sold) AS amount_sold FROM sh.sales s, sh.customers c, sh.products p WHERE s.cust_id = c.cust_id AND s.prod_id = p.prod_id GROUP BY p.prod_category, c.country_id ORDER BY p.prod_category, c.country_id; SQL> DECLARE 2 l_query CLOB := 'SELECT p.prod_category, c.country_id, 3 sum(s.quantity_sold) AS quantity_sold, 4 sum(s.amount_sold) AS amount_sold 5 FROM sh.sales s, sh.customers c, sh.products p 6 WHERE s.cust_id = c.cust_id 7 AND s.prod_id = p.prod_id 8 GROUP BY p.prod_category, c.country_id 9 ORDER BY p.prod_category, c.country_id'; 10 BEGIN 11 dbms_mview.explain_rewrite( 12 query => l_query, 13 mv => 'sales_customers_products', 14 statement_id => '43' 15 ); 16 END; 17 / PL/SQL procedure successfully completed SQL>select message from rewrite_table where statement_id='43'; MESSAGE ------------------------------------------------------------------- QSM-01151: 已重寫查詢 QSM-01209: 已通過實體化檢視 SALES_CUSTOMERS_PRODUCTS, 採用文字匹配演算法進行了查詢重寫 /
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-765390/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【MV】物化檢視查詢重寫
- 使用物化檢視查詢重寫 優化對於 UNION ALL檢視的CONNECT BY查詢優化
- Dbutils的QueryRunner無法通過中文查詢問題
- 【SQL】Oracle查詢轉換之物化檢視查詢重寫SQLOracle
- 【轉載】為什麼 MySQL 不推薦使用子查詢和 joinMySql
- [轉載] 為什麼 MySQL 不推薦使用子查詢和 joinMySql
- 查詢重寫
- Oracle 查詢行數很少,為什麼不走索引?Oracle索引
- 雙重檢查模式(DCL)問題模式
- 為什麼我不贊成開發來寫檢視
- sphinx查詢過濾問題
- 為什麼重寫equals必須重寫hashCode
- 為什麼SELECT查詢中應避免使用*?
- 為什麼忘記commit也會造成select查詢的效能問題MIT
- Dubbo為什麼要用Go重寫?Go
- 通過SQL查詢兩張表中不匹配的行SQL
- 程式設計師為什麼不寫單元測試?程式設計師
- 通過 v$sqlarea 查詢disk read嚴重(I/O)的SQL-- Oracle效能檢視SQLOracle
- 一個使用JDBC按Date查詢查詢的問題JDBC
- 為什麼我使用了索引,查詢還是慢?索引
- 為何在查詢中索引未被使用(二)——問題解答索引
- 為什麼 Redis 的查詢很快, Redis 如何保證查詢的高效Redis
- 淺析物化檢視與查詢重寫(Enable query rewrite)
- 隱式轉換影響物化檢視查詢重寫
- phpstrom用模型where查詢,欄位為什麼不會提示?PHP模型
- java 中為什麼重寫 equals 後需要重寫 hashCodeJava
- 做軟體測試,為什麼你的工資不過萬?
- 12c 查詢重寫物化檢視 - DBMS_ADVISOR.TUNE_MVIEW的使用View
- 【轉載】為什麼忘記commit也會造成select查詢的效能問題MIT
- 為什麼我不建議你通過 Python 去找工作?Python
- 索引為什麼能提供查詢效能...索引
- ClickHouse為什麼查詢速度快?
- es的複雜查詢測試,使用jest的dsl工具寫查詢語句
- Java重寫equals方法時為什麼要重寫hashcode方法Java
- 為什麼電話機器人回答不上問題?機器人
- EBS中通過查詢 dba_source 檢視pkg 的版本號
- Oracle效能問題檢查 - 常用查詢指令碼(final)Oracle指令碼
- 為什麼Oracle的外連線寫法不同導致查詢結果不同?Oracle