ÔÚOracleµÄQuery RewriteÖÐÖ÷ÒªÓÐÈýµã, µÚÒ»ÊÇҪʹÓÃCBO; µÚ¶þÊÇÒªÉèÖÃquery rewrite enabled²ÎÊýΪTRUE; µÚÈýÊÇÒªÏÈÔñÉèÖÃquery rewrite integrity²ÎÊýµÄÖµ(stale_tolerated, trusted, enforced). ¶ÔÓÚµÚÒ»µã, ÎÒÃÇ×îºÃanalyzeÏà¹ØµÄ±í¼°Ë÷Òý¼°MV; ¶ÔÓÚµÚ¶þµã,Õâ¸ö²ÎÊýÖ»ÓÐÁ½¸öÖµ(true, false), ºÜ¼òµ¥; ¶ÔÓÚµÚÈýµã, ÎÒÃÇÏÈÀ´¿´OracleµÄ¹Ù·½¶ÔÓÚÕâ¸ö²ÎÊýµÄ½âÊÍ:
ENFORCED
Oracle enforces and guarantees consistency and integrity
TRUSTED
Oracle allows rewrites using relationships that have been declared, but that are not enforced by Oracle.
STALE_TOLERATED
Oracle allows rewrites using unenforced relationships. Materialized views are eligible for rewrite even if they are known to be inconsistent with the underlying detail data.
Õâ¸ö²ÎÊýÓеãÄÑÓÚÀí½âһЩ, µ«Ö÷ÒªºÍÊý¾ÝµÄÒ»ÖÂÐÔÓйØ, ÔÚOracleµÄQuery RewriteÖÐ, Ò»Ð©Ô¼ÊøµÄÉùÃ÷»ò״̬ºÍOracle¾öÓÚ¿É·ñQuery RewriteÓкܴóµÄ¹ØÏµ. ENFORCED±íʾOracleÖ»ÏàÐÅEnabledºÍValidatedµ ......
SET NEWPAGE NONE HEADING OFF SPACE 0 PAGESIZE 0 TRIMOUT ON TRIMSPOOL ON LINESIZE 2500 colsep | feedback off termout off pages 0
set colsep |
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
set feedback on
declare cursor cur_no is
select beginno,endno from hm where 1=1;
beginno varchar2(11);
endno varchar2(11);
begin
for my_no in cur_no loop
beginno:=my_no.beginno;
endno:=my_no.endno;
while (beginno<=endno) loop
insert into hmnew values(beginno);
commit;
beginno:=beginno+1;
end loop;
commit;
end loop;
end; ......
ÔÚQuery RewriteÖдó¼Ò¿´µ½Õâ¸ö¼¼ÊõÀë²»¿ªÒ»Ñù¶«Î÷, ʵÌ廯ÊÓͼ, ¼ò³ÆMVIEW. ÕâÊÇOracleÔÚ8iÖÐÊ×ÏÈÍÆ³öµÄ¼¼Êõ, MVIEW³ýÁËÔÚQuery RewriteÖÐʹÓÃÍâ, »¹ÔÚMaster - Slave¸´ÖÆÖÐÓкÜÖØÒªµÄ×÷ÓÃ, ÔÚÕâ¶ùÎÒÃÇÖ÷Òª¹ØÐÄQuery RewriteÏà¹ØµÄµØ·½, OracleÔÚQuery Rewrite·½ÃæÔ½À´Ô½Ç¿ÁË, ÔÚOracle 8iÖлù±¾ÉÏÊÇText MatchµÄQuery Rewrite, ÔÚ9i/10gÖÐÓкܴóµÄ¸üÐÂÁË, »¹Ö§³ÖÒ»°ãµÄQuery Rewrite(Ö¸Text MatchÒÔÍâµÄ), Èç¿ÉÒÔÊÔÒ»ÏÂ×îºóÒ»¸öSQLÓï¾ä, ÔÚ8iÖв»ÄÜrewrite, ¶øÔÚ9iÖÐÈ´¿ÉÒÔ:
SQL> desc mvtest8
Name Null? Type
------------------------------ -------- -----------------
OWNER VARCHAR2(30)
OBJECT_NAME ......
¿ÉÒÔ¿´µ½MVIEWÔÚQuery RewriteÖеÄÖØÒªÐÔ, ÒªÔÚʵ¼ÊÓ¦ÓÃÖÐʹÓÃ, ¾ÍµÃÖªµÀËüµÄºÜ¶à·½Ãæ, ÆäÖÐË¢ÐÂÊÇ×îÖ÷ÒªµÄ:
1, MVIEWÈÕÖ¾µÄ½¨Á¢
2, »ã×ÜÐ͵ÄMIVEWµÄË¢ÐÂ
3, JOINÀàÐ͵ÄMVIEWµÄË¢ÐÂ
4, ¸ü¸´ÔÓµÄMVIEWµÄË¢ÐÂ
5, ·ÖÇøÊ±µÄMVIEWµÄË¢ÐÂ
ÔÚÕâ¶ùÎÒÃÇÖ÷ÒªÌÖÂÛµÄÊÇÈçºÎʵÏÖFastË¢ÐÂ, ·ñÔòûÓжàÉÙÒâÒéµÄ. ÎÒÃÇÒ»µãÒ»µãÀ´¿´:
1, ҪʵÏÖÔöÁ¿Ë¢ÐÂ, ±ØÐëÔÚMVIEWÒýµÄµÄ±íÉÏ´´½¨MVIEW Log, ÎÒÃÇÖ÷ÒªÀ´ËµÒ»Ï¼¸¸öÑ¡Ïî
WITH ROWID/PRIMARY KEY : ÔÚMVIEW LogÖмǼROWID»òÖ÷¼üÒÔ·´Ó³¸Ä¸ü¹ýµÄ¼Ç¼, ¶ÔÓÚÒ»°ã±íÎÒÍÆ¼öÓÃWITH ROWID, ¶ÔÓÚIOT, ÔòÇëÓÃPRIMARY KEY.
(column list): ΪÁËÈÃMVIEW LOG±äµÃСһµãÄã¿ÉÒÔÖ»°üÀ¨½øÔÚMVIEWµÄSQLÖÐÒýÓõÄ×Ö¶Î, OracleÓñíÀ´ÊµÏÖMVIEW LOGÔÚ¸üÐÂÆµ·±µÄ±íÉÏ, MVIEW LOG¿ÉÄÜ»á±äµÃºÜ´ó. ÔÚÖ¸¶¨ÁËWITH PRIMARY KEYʱ, Ö÷¼üµÄÁÐÒѾ°üÀ¨ÁË, Òò´ËÔÚcolumn listÖоͲ»ÒªÔÙд½øÈ¥ÁË.
WITH SEQUENCE: ÓÃÓڼǼÐ޸ķ¢ÉúµÄ˳Ðò, Èç¹ûûÓжԻù±íµÄDELETE²Ù×÷Ôò¿ÉÒÔ²»ÓüÓÕâ¸öÑ¡Ïî.
INCLUDING NEW VALUES: Ö÷ÒªÓÃÓÚÔÚ»ã×ÜÐ͵ÄMVIEWʱ, ͬʱ¼Ç¼×ֶεľÉÖµºÍÐÂÖµÒÔʵÏÖ¿ìËÙË¢ÐÂ, ĬÈÏÊÇEXCLUDING NEW VALUES, ÕâʱÈçÐ ......
¶ÔÓÚÒ»¸ö¸ø¶¨µÄSQL, ºÍÏÖÓеÄMVIEW, Õâ¸öSQL¿ÉÄܱ»Rewrite, Ò²¿ÉÄܲ»Äܱ»Rewrite, ÈçºÎÕÒ³öÕâÆäÖеÄÔÒòÄØ, ¿¿¾Ñé¿ÉÒÔ½â¾öһЩÎÊÌâ, ²»¹ýËù»¨µÄʱ¼ä¾ÍÒª³¤Ò»µãÁË. ÆäʵÔÚOracleÖÐÌṩÁËÒ»¸öº¯Êý¿ÉÒÔÓÃÓÚ½âÊÍΪʲôij¸öSQL²»Äܱ»ÖØÐ´, Õâ¸ö¹ý³ÌλÓÚdbms_mviewÕâ¸ö°üÖÐ, ¹ý³ÌÃûΪexplain_rewrite, ÓÐÁËÕâ¸ö¹¤¾ß, ¿ÉÒÔ¿ìËÙµØÕÒ³öΪʲô²»Äܱ»ÖØÐ´, ҪʹÓÃÕâ¸ö¹ý³Ì, ÄãÐèÒªÊÂÏÈ´´½¨Ò»¸ö±íREWRITE_TABLE, ¿ÉÒÔͨ¹ý@?/rdbms/admin/utlxrw.sqlÀ´´´½¨.
CREATE TABLE REWRITE_TABLE
(
statement_id VARCHAR2(30), -- id for the query
mv_owner VARCHAR2(30), -- owner of the MV
mv_name VARCHAR2(30), -- name of the MV
sequence INTEGER, &nbs ......
Oracle ´´½¨ÐòÁУº
create sequence SEQ_Tablename_id
increment by 1 --ÿ´ÎÔö¼Ó1
start with 1 --´Ó1¿ªÊ¼
nomaxvalue &n ......