锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
聽聽聽聽聽聽聽聽聽聽聽聽聽 闇瑕佽皟鏁村垵濮嬪弬鏁?query_rewrite_enabled錛岃鍙傛暟鍙互鍔ㄦ佽皟鏁達(dá)紝涓嶉渶瑕侀噸鍚?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽 alter system set query_rewrite_enabled=true;
聽聽聽聽聽聽聽聽聽聽聽聽聽 鐩稿叧鍙傛暟榪樻湁query_rewrite_integrity 璇ュ弬鏁板兼湁涓変釜enforced銆乼rusted銆乻tale_tolerated 璋冩暣鏌ヨ閲嶅啓綰у埆錛宔nforced綰у埆鏈浣庯紝鏄粯璁ゅ箋傚彲閲嶅啓鏌ヨ鐨勫彲鑳芥渶灝忋侊紙涓漢鐞嗚В錛?br />綆鍗曚緥瀛?/strong>錛?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 create聽 materialized view聽 mview_owner_sum
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 build immediate
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 refresh on commit
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 enable query rewrite
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 as
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 select count(*),owner from test
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 group by owner;
oracle鍦ㄦ暟鎹洿鏂板悗鏈夊彲鑳斤紙refresh on commit錛夎嚜鍔ㄩ噸鍐欑墿鍖栬鍥撅紝浣嗕笉鏄兘瀵逛換鎰忕殑鐗╁寲瑙嗗浘榪涜鍚屾錛屽鍗曚竴琛ㄦ垨鑰呮病鏈夎仛闆嗙殑榪炴帴鍙互閲嶅啓銆?br />鏌ヨ閲嶅啓錛?/strong>
聽聽聽聽聽聽聽聽聽聽聽聽聽 濡傛灉鏌ヨ璇彞絎﹀悎濡備笅鐩稿叧鏉′歡錛宱racle浼樺寲鍣ㄤ細(xì)浠庣墿鍖栬鍥句腑鏌ヨ錛屼篃灝辨槸鏌ヨ閲嶅啓銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽 1銆乻ql鍜屽畾涔夎鍥劇殑sql 瀹屽叏鍖歸厤錛屽彲蹇界暐絀虹櫧瀛楃澶у皬浠ュ強(qiáng)鍏朵粬鏍煎紡
聽聽聽聽聽聽聽聽聽聽聽聽聽 2銆侀儴鍒嗘鏂囧尮閰?br />聽聽聽聽聽聽聽聽聽聽聽聽聽 3銆佹煡璇㈢殑鏁版嵁鍙互浠庣墿鍖栬鍥句腑鎻愬彇鍑烘潵
聽聽聽聽聽聽聽聽聽聽聽聽聽 4銆佽繛鎺ュ吋瀹?br />聽聽聽聽聽聽聽聽聽聽聽聽聽 5銆佸垎緇勫吋瀹?br />聽聽聽聽聽聽聽聽聽聽聽聽聽 6銆佽仛闆嗗吋瀹?br />聽聽聽聽聽聽聽聽聽聽聽 錛?銆?銆?鐨勫師鍒欏疄闄呬笂灝辨槸鍋氱浉鍏寵繛鎺ャ佸垎緇勩佽仛闆嗙浉鍏蟲暟鎹叏鍖呭惈鍦ㄧ墿鍖栬鍥句腑鎵嶈兘閲嶅啓鏌ヨ)
聽聽聽聽聽聽聽聽聽聽聽聽聽 7銆佸彟澶栧湪涓嶅悓鐨勪紭鍖栫瓥鐣ヤ笅錛屾槸鍚︽煡璇㈤噸鍐欐槸涓嶄竴鏍風(fēng)殑銆傚湪榛樿choose妯″紡鏁版嵁閲忎笉澶х殑鎯呭喌鍩烘湰涓嶄細(xì)鏌ヨ閲嶅啓銆?br />
鏍規(guī)嵁涓婅堪鍘熷垯錛屽彲閫氳繃濡備笅鐨勬柟娉曡揪鍒板敖鍙兘鐨勬煡璇㈤噸鍐欙紝杈懼埌浼樺寲鐨勭洰鐨勶細(xì)
1銆?灝藉彲鑳界殑澧炲姞鐗╁寲瑙嗗浘瀵瑰簲鐨勫熀鏈〃鐨勪箣闂寸殑綰︽潫鍏崇郴錛屽涓婚敭銆佸閿紝絳夛紝
榪欐牱鏌ヨ鏄鏋滃搴旀暟鎹彲浠庣墿鍖栬鍥句腑鎻愬彇鍑烘潵錛岀郴緇熶細(xì)鏈夊彲鑳芥敼鍐欐煡璇紝閲囩敤鐗╁寲瑙嗗浘
2銆佸彲浠ラ氳繃dimension瀵硅薄鍙互鎸囧畾鐩稿叧琛ㄣ佸瓧孌典箣闂寸殑鍏崇郴
搴旂敤嫻嬭瘯錛?br />姝eソ鍚屼簨鏈夌浉鍏崇殑緇熻鎬ц兘闂錛岀敤鐗╁寲瑙嗗浘灝濊瘯浜嗕竴鎶婏紝鏌ヨ鐨勯熷害蹇簡浜屽崄鍊嶏紝浣嗘暟鎹洿鏂扮‘瑕?6縐掞紝錛堣鍥炬槸閲囩敤refresh on commit鏂瑰紡鍒涘緩錛夛紝涓嶈兘瑙e喅璇ラ棶棰?鏁版嵁閲忎笉澶э紝鍋氬畬琛ㄣ佺儲寮曞垎鏋愬悗鏌ヨ鍦?.5縐掑乏鍙熾?br />
閬楃暀闂錛?br />1銆佸垱寤轟簡緇村璞★紝瀵瑰簲鐨勬墽琛岃鍒掓病鏈夊彂鐢熸敼鍙橈紝娌℃湁杈懼埌鍒涘緩緇寸殑鐩殑
2銆佸鏋滄槸 refresh on聽demand 鏂瑰紡鍒涘緩鐨勫浣曞埛鏂版暟鎹?br />3銆佺己涔忚緇嗙殑鐗╁寲瑙嗗浘鍒涘緩璇硶璇存槑錛屽彧鏄揪鍒板熀鏈簡瑙g墿鍖栬鍥劇殑紼嬪害
鐩稿叧瀛︿範(fàn)鑴氭湰錛?br />create materialized view mview_deptsum
build immediate
refresh on demand
enable query rewrite
as select a.deptno,a.dname,count(b.empno)
from dept a,emp b where a.deptno=b.deptno
group by a.deptno,a.dname
聽
create table sales(trans_date date,cust_id int,sales_smount number);
insert /*+append */ into聽 sales
select trunc(sysdate,'year')+mod(rownum,366) trans_date,
mod(rownum,100) cust_id,
abs(dbms_random.random)/100 sales_smount from all_objects;
begin
for i in 1..4 loop
insert /*+append */ into聽 sales
select聽 trans_date,
cust_id,
abs(dbms_random.random)/100 sales_smount from sales;
commit;
end loop;
end;
聽
create table time_hierarchy
(day primary key,mmyyyy,mon_yyyy,qtr_yyyy,yyyy)
organization index
as
select distinct trans_date day,
cast(to_char(trans_date,'mmyyyy')as number) mmyyyy,
to_char(trans_date,'mon-yyyy') mon_yyyy,
'Q'||ceil(to_char(trans_date,'mm')/3)||'FY'
||to_char(trans_date,'yyyy') QTR_YYYY,
cast(to_char(trans_date,'yyyy') as number)yyyy
from sales;
/
聽
create materialized view mv_sales
build immediate
refresh on demand
enable query rewrite
as
select sales.cust_id,sum(sales.sales_smount),time_hierarchy.mm_yyyy
from sales,time_hierarchy
where sales.trans_date =time_hierarchy.day
group by sales.cust_id, time_hierarchy.mm_yyyy
/
select sum(sales.sales_smount),time_hierarchy.mmyyyy
from sales,time_hierarchy
where sales.trans_date =time_hierarchy.day
group by聽 time_hierarchy.mmyyyy
select sum(sales.sales_smount),time_hierarchy.qtr_yyyy
from sales,time_hierarchy
where sales.trans_date =time_hierarchy.day
group by聽 time_hierarchy.qtr_yyyy
聽
create dimension time_hierarchy_dim
level day is聽 time_hierarchy.day
level mmyyyy聽 is time_hierarchy.mmyyyy
level qtr_yyyy聽 is time_hierarchy.qtr_yyyy
level yyyy聽聽聽聽聽 is time_hierarchy.yyyy
hierarchy time_rollup
(
day child of
mmyyyy child of
qtr_yyyy child of
yyyy
)
attribute mmyyyy
determines mon_yyyy;
綃囧璇?/strong>錛?br />聽聽聽聽聽聽聽聽聽聽聽鍋氭祴璇曞鍏ョ殑鏃跺欙紝瀵瑰簲琛ㄧ┖闂翠笉瀛樺湪錛屽師鏈兂閫氳繃鏀跺洖鍒涘緩鏃犻檺絀洪棿鐨勬潈闄愶紝
杈懼埌鍙互瀵煎叆鍒扮敤鎴峰搴旇〃絀洪棿錛岀粨鏋滀笉琛岋紝鍙ソ閲嶆柊鍒涘緩瀵瑰簲琛ㄧ┖闂村鍏ャ傚悗鏉ュ繕浜嗚祴浜堝搴旂敤鎴鋒潈闄愶紝緇撴灉浠婂ぉ鍒涘緩鐗╁寲瑙嗗浘鎶ra-01536聽 瓚呰繃絀洪棿闄愰噺,鍒濅互涓烘槸琛ㄧ┖闂翠笉澶燂紝瀹為檯鏄搴旂殑鐢ㄦ埛娌℃湁鏃犻檺浣跨敤琛ㄧ┖闂寸殑鏉冮檺alter user username quota unlimited on tablespacename銆傝祴浜堟潈闄愬悗鍙垱寤猴紝涓鍒囨甯搞?br />
聽聽聽聽聽聽聽聽聽聽聽聽聽