10G開始Oracle區分物化檢視和表
在9i以前,很多功能都是不區分表和物化檢視的區別的,到了10g以後。很多功能會將表和物化檢視區分對待。
原本通用的COMMENT ON TABLE語句,對物化檢視不再有效,必須要使用COMMENT ON MATERIALIZED VIEW語句代替。
SQL> SELECT * FROM V$VERSION;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
PL/SQL Release 10.2.0.4.0 - Production
CORE 10.2.0.4.0 Production
TNS for Linux: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - Production
SQL> CREATE TABLE T_BASE (ID NUMBER, TYPE VARCHAR2(30), NUM NUMBER);
Table created.
SQL> CREATE MATERIALIZED VIEW
LOG ON T_BASE
2 WITH ROWID, SEQUENCE (TYPE, NUM)
3 INCLUDING NEW VALUES;
Materialized view log created.
SQL> CREATE MATERIALIZED VIEW
MV_BASE
2 REFRESH FAST ENABLE QUERY REWRITE AS
3 SELECT TYPE, SUM(NUM) SUM_NUM, COUNT(NUM) CNT_NUM, COUNT(*) CNT
4 FROM T_BASE
5 GROUP BY TYPE;
Materialized view created.
SQL> COMMENT ON TABLE MV_BASE IS
'COMMENT ON A MATERIALIZED VIEW ';
COMMENT ON TABLE MV_BASE IS 'COMMENT ON A MATERIALIZED VIEW '
*
ERROR at line 1:
ORA-12098: cannot comment on the materialized view
SQL> COMMENT ON MATERIALIZED VIEW MV_BASE IS 'COMMENT ON A MATERIALIZED VIEW
';
Comment created.
SQL> COL COMMENTS FOR A60
SQL> SELECT * FROM USER_MVIEW_COMMENTS;
MVIEW_NAME COMMENTS
------------------------------
------------------------------------------------------------
MV_BASE COMMENT ON
A MATERIALIZED VIEW
其實不只是COMMENT發生了變化,關於物化檢視的執行計劃Oracle也對其進行細化,將物化檢視的掃描和全表掃描區分開:
SQL> SET AUTOT ON EXP
SQL> SELECT COUNT(*) FROM MV_BASE;
COUNT(*)
----------
0
Execution Plan
----------------------------------------------------------
Plan hash value: 3034976462
-------------------------------------------------------------------------
| Id | Operation | Name | Rows
| Cost (%CPU)| Time |
-------------------------------------------------------------------------
| 0 | SELECT STATEMENT |
| 1 | 2
(0)| 00:00:01 |
| 1 |
SORT AGGREGATE | |
1 | | |
| 2 |
MAT_VIEW ACCESS FULL| MV_BASE |
1 | 2 (0)| 00:00:01 |
-------------------------------------------------------------------------
Note
-----
- dynamic sampling used for this
statement
SQL> SELECT /*+ REWRITE */ TYPE, COUNT(*) FROM T_BASE GROUP BY TYPE;
no rows selected
Execution Plan
----------------------------------------------------------
Plan hash value: 1008429399
----------------------------------------------------------------------------------------
| Id | Operation | Name | Rows
| Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | |
1 | 30 | 2
(0)| 00:00:01 |
| 1 |
MAT_VIEW REWRITE ACCESS FULL| MV_BASE | 1 |
30 | 2 (0)| 00:00:01 |
----------------------------------------------------------------------------------------
Note
-----
- dynamic sampling used for this
statement
在9i以前,很難從執行計劃中區分掃描的是表還是物化檢視,但是現在一目瞭然了。
總的來說,這種改進還是很有意義的,使用者可以更清楚的瞭解處理的物件到底是表還是物化檢視。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-723483/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle普通檢視和物化檢視的區別Oracle
- 【MVIEW】Oracle通過物化檢視同步表資料及簡介ViewOracle
- Oracle物化檢視的建立及使用(二)Oracle
- Oracle物化檢視的建立及使用(一)Oracle
- 物化檢視
- 物化檢視(zt)
- ORACLE常見檢視和表整理Oracle
- StarRocks 物化檢視重新整理流程和原理
- calcite物化檢視詳解
- 【SQL】Oracle查詢轉換之物化檢視查詢重寫SQLOracle
- 資料庫的物化檢視資料庫
- 物化檢視分割槽實驗
- 物化檢視幾個知識點
- ClickHouse 物化檢視學習總結
- ClickHouse 效能優化?試試物化檢視優化
- ClickHouse效能優化?試試物化檢視優化
- 檢視oracle臨時表空間佔用率的檢視Oracle
- 基於ROWID更新的物化檢視測試
- StarRocks 物化檢視重新整理流程及原理
- 物化檢視如何快速完成資料聚合操作?
- oracle檢視被鎖的表和解鎖Oracle
- 檢視spark程式/區分pyspark和pandas的表的合併,pyspark是join,pandas是mergeSpark
- Postgres使用trigger自動重新整理物化檢視
- 物化檢視快速重新整理與ORA-00001
- 使用Materialise物化檢視解耦微服務架構解耦微服務架構
- Oracle 10g大檔案表空間(轉)Oracle 10g
- 火山引擎ByteHouse:如何最佳化ClickHouse物化檢視能力?
- hg_job配置定時重新整理物化檢視
- 檢視oracle被鎖的表是誰鎖的Oracle
- oracle SGA區基礎知識與檢視命令Oracle
- 物化檢視日誌無法正常清除的解決方法
- 資料泵匯出匯入物化檢視(ORA-39083)
- hive 分割槽表和分桶表區別Hive
- Oracle OCP(24):檢視Oracle
- ORACLE 物化檢視維護中相關基表發生欄位長度類DDL變更後需要重建或者全量重新整理Oracle
- 從setState開始,探索Flutter的檢視更新流程Flutter
- 系統表和資料字典檢視
- 檢視錶名和表的行數
- 基於圖神經網路的動態物化檢視管理神經網路