標籤:佔用 地址 唯一索引 res ddr eve rac refresh 定製
使用視圖的優點:
1.簡化資料操作:視圖可以簡化使用者處理資料的方式。
2.著重於特定資料:不必要的資料或敏感性資料可以不出現在視圖中。
3.視圖提供了一個簡單而有效安全機制,可以定製不同使用者對資料的存取權限。
4.提供向後相容性:視圖使使用者能夠在表的架構更改時為表建立向後相容介面。
建立或修改視圖文法
CREATE [OR REPLACE] [FORCE] VIEW view_name
AS subquery
[WITH CHECK OPTION ]
[WITH READ ONLY]
OR REPLACE :若所建立的試圖已經存在,ORACLE 自動重建該視圖;
FORCE :不管基表是否存在 ORACLE 都會自動建立該視圖;
subquery :一條完整的 SELECT 語句,可以在該語句中定義別名;
WITH CHECK OPTION :插入或修改的資料行必須滿足視圖定義的約束;
WITH READ ONLY :該視圖上不能進行任何 DML 操作。
刪除視圖文法
DROP VIEW view_name
鍵保留表是理解串連視圖修改限制的一個基本概念。該表的主鍵列全部顯示在視
圖中,並且它們的值在視圖中都是唯一且非空的。也就是說,表的索引值在一個連
接視圖中也是索引值,那麼就稱這個表為鍵保留表。
物化視圖:
建立物化視圖文法、
CREATE METERIALIZED VIEW view_name
[BUILD IMMEDIATE | BUILD DEFERRED ]
REFRESH [FAST|COMPLETE|FORCE]
[ ON [COMMIT |DEMAND ] | START WITH (start_time) NEXT
(next_time) ] AS
subquery
BUILD IMMEDIATE 是在建立物化視圖的時候就產生資料
BUILD DEFERRED 則在建立時不產生資料,以後根據需要再產生資料。
預設為 BUILD IMMEDIATE。
重新整理(REFRESH):指當基表發生了 DML 操作後,物化視圖何時採用哪種
方式和基表進行同步。
REFRESH 後跟著指定的重新整理方法有三種:FAST、COMPLETE、FORCE。
FAST 重新整理採用增量重新整理,只重新整理自上次重新整理以後進行的修改。
(注意:建立增量重新整理的物化視圖,必須
create materialized view log on t_address with rowid;
create materialized view log on t_area with rowid
1. 建立物化視圖中涉及表的物化視圖日誌。
2. 在查詢語句中,必須包含所有表的 rowid ( 以 rowid 方式建立物化視圖日誌 ))
COMPLETE 重新整理對整 個物化視圖進行完全的重新整理。
如果選擇 FORCE 方式,則 Oracle 在重新整理時會去判 斷是否可以進行快速重新整理,
如果可以則採用 FAST 方式,否則採用 COMPLETE 的方式。
FORCE 是預設的方式。
重新整理的模式有兩種:ON DEMAND 和 ON COMMIT。ON DEMAND 指需要
手動重新整理物化視圖(預設)。ON COMMIT 指在基表發生 COMMIT 操作時自動
重新整理。
手動重新整理物化視圖代碼:
begin
DBMS_MVIEW.refresh(‘物化視圖表名稱‘,‘C‘);
end;
或者通過下面的命令手動重新整理物化視圖:
EXEC DBMS_MVIEW.refresh(‘物化視圖表名稱‘,‘C‘);
注意:此語句需要在命令視窗中執行。
C:代表 complete
序列:
序列是 ORACLE 提供的用於產生一系列唯一數位資料庫物件。
建立序列文法:
create sequence 序列名稱
通過序列的偽列來訪問序列的值
NEXTVAL 返回序列的下一個值
CURRVAL 返回序列的當前值
提取下一個值
select 序列名稱.nextval from dual
提取當前值
select 序列名稱.currval from dual
建立複雜序列
CREATE SEQUENCE sequence //建立序列名稱
[INCREMENT BY n] //遞增的序列值是n 如果n是正數就遞增,如果是負數就遞減 預設是 1
[START WITH n] //開始的值,遞增預設是 minvalue 遞減是 maxvalue
[{MAXVALUE n | NOMAXVALUE}] //最大值
[{MINVALUE n | NOMINVALUE}] //最小值
[{CYCLE | NOCYCLE}] //迴圈/不迴圈
[{CACHE n | NOCACHE}];//分配並存入到記憶體中
刪除序列:
DROP SEQUENCE 序列名稱;
索引:
索引是用於加速資料存取的資料對象。合理的使用索引可以大大降低 i/o 次
數,從而提高資料訪問效能。
索引是需要佔據儲存空間的,也可以理解為是一種特殊的資料。形式類似於
的一棵“樹”,而樹的節點儲存的就是每條記錄的物理地址,也就是我們提
到的偽列(ROWID)
普通索引
create index 索引名稱 on 表名(列名);
唯一索引:
如果我們需要在某個表某個列建立索引,而這列的值是不會重複的。這是我們可
以建立唯一索引。
文法
create unique index 索引名稱 on 表名(列名);
複合索引:
文法:
create index 索引名稱 on 表名(列名,列名.....);
反向鍵索引:
應用情境:當某個欄位的值為連續增長的值,如果構建標準索引,會形成歪脖子
樹。這樣會增加查詢的層數,效能會下降。建立反向鍵索引,可以使索引的值變
得不規則,從而使索引樹能夠均勻分布。
文法:
create index 索引名稱 on 表名(列名) reverse;
位元影像索引:
使用情境:位元影像索引適合建立在低基數列上
位元影像索引不直接儲存 ROWID,而是儲存位元組位到 ROWID 的映射
優點:減少回應時間,節省空間的佔用
文法:
create bitmap index 索引名稱 on 表名(列名);
Oracle資料庫的視圖