¿ÉÒÔ¿´µ½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, ÕâʱÈçÐèÒªµ±Ç°Öµ, OracleÐèÒªµ½±íÖÐÈ¥²éѯ.
2, »ã×ÜÐ͵ÄMIVEWµÄË¢ÐÂ, OracleÖ§³Ö·Ö×麯Êý¼°Ò»²¿·ÝµÄ·ÖÎöº¯ÊýµÄÔöÁ¿Ë¢ÐÂ.
½«count(*)¼Óµ½MVIEWµÄSQL, Èç¹ûÓÐSUM(*)ºÍCOUNT(*)´æÔھͿÉÒÔʵÏÖÔöÁ¿Ë¢ÐÂ.
3, JOINÀàÐ͵ÄMVIEWµÄË¢ÐÂ
ÔÚJoinµÄMVIEWʱ½«»ù±íµÄROWID¶¼¼Óµ½MVIEWÖÐ, ÈçTA(A,B)ºÍTB(C,D), ÔòMVIEWʱ¿ÉÒÔдΪ, SELECT TA.ROWID TA_ROWID,TB.ROWID TB_ROWID, <<collist>> from TA,TB WHERE ...
4, ¸´ÔÓÀàÐ͵ÄMVIEWµÄË¢ÐÂ
¿ÉÒÔ¿¼ÂÇת»»³É¼¶ÁªµÄMVIEW, ÈçÏȽ¨JOINµÄMVIEW, ÔÙ½¨SUMMARYµÄMVIEW
5, ·ÖÇøÊ±µÄMVIEWµÄË¢ÐÂ
ÓÃDBMS_MVIEW.MARKER(±íÃû)À´»ñµÃ·ÖÇøID, ²¢¼Óµ½MIVEWµÄSELECTÁбíÖÐ, ÕâÑù¿ÉÒÔʵÏÖ·ÖÇø±íµÄÔöÁ¿Ë¢ÐÂ, Çë×ÔÒÑ×öʵÑéÀ´²âÊÔ.
¹ØÓÚÕⲿ·ÝµÄ½âÊÍ, ÔÚ<<Data Warehouse Guide>>ÕâÒ»¸öÎĵµÖÐÓкÜÏêϸµÄ½âÉÜ, ÎÒÒ²ÕýÔÚ¿´, ¿´Íêºó»á¸üеÄ.