๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
ORACLE/ADMIN

[Oracle] Materialized View ์ •๋ฆฌ ๋ฐ Advisor ์‚ฌ์šฉํ•˜์—ฌ ์‰ฝ๊ฒŒ ์ƒ์„ฑ

by ๐ŸŒปโ™š 2020. 7. 16.

์ผ๋ฐ˜ View์˜ ๋ฌธ์ œ์ 

View๋Š” ๋ณต์žกํ•œ SELECT ๋ช…๋ น๋ฌธ์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฟผ๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด SELECT ๋ฌธ์„ ๊ฐ–๊ณ  ์žˆ๋Š” ์˜ค๋ธŒ์ ํŠธ ์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ–๊ณ  ์žˆ์ง€ ์•Š๊ณ  SELECT๋ฌธ์„ ์ €์žฅํ•ด์„œ ํ•ด๋‹น View๋ฅผ ์กฐํšŒํ–ˆ์„ ๋•Œ, ์ฟผ๋ฆฌ๊ฐ€ ๋ณต์žกํ•˜๋‹ค๋ฉด ํŽธํ• ์ง€์–ธ์ • ์›๋ž˜์˜ ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๋ฌธ์„ ์กฐํšŒํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์‚ฌ์šฉ์˜ ํŽธ์˜์„ฑ์€ ์žˆ์ง€๋งŒ ์„ฑ๋Šฅ์ ์ธ ์ธก๋ฉด์—์„œ ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ์ƒํ™ฉ์€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

 

๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ์ƒํ™ฉ์„ ์˜ˆ๋กœ ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 3๊ฐœ์˜ ํ…Œ์ด๋ธ”์„ ์กฐ์ธํ•˜๋Š” View๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ 3๊ฐœ์˜ ํ…Œ์ด๋ธ” ๋ชจ๋‘ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์œ ํ•˜์—ฌ ์ฟผ๋ฆฌ๋ฌธ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š”๋ฐ ๋„ˆ๋ฌด ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ ค ์„ฑ๋Šฅ์ ์ธ ๊ฐœ์„ ์ด ํ•„์š”ํ•œ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์œ ํ•˜๋Š” View์ธ Materialized View OR Sumary Table์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

 

Summary Table ์‚ฌ์šฉ ํ•ด๊ฒฐ๋ฒ•

๋ฐ์ดํ„ฐ์–‘์œผ๋กœ ์ธํ•ด ์กฐ์ธ ์ž‘์—…์„ ํ–ˆ์„ ๋•Œ ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ๋ฌธ์ œ๋Š” ๋ฏธ๋ฆฌ ์กฐ์ธ ์ž‘์—…์„ ํ•œ ๊ฒฐ๊ณผ๋ฅผ ํ…Œ์ด๋ธ”๋กœ ์ €์žฅํ•˜์—ฌ ์ฟผ๋ฆฌ ์ž‘์—…์„ ํ•  ๋•Œ ์กฐ์ธ์ด ์•„๋‹Œ Summary Table์„ ์กฐํšŒํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ด๋•Œ ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ๊ฒƒ์€ Base Table๋“ค๊ณผ Summary Table์˜ ๋™๊ธฐํ™” ์ž‘์—…์ž…๋‹ˆ๋‹ค. ๋™๊ธฐํ™”์— ๋Œ€ํ•œ ๋ฌธ์ œ๋Š” Trigger๋ฅผ ์‚ฌ์šฉํ•ด์„œ DML์— ๋Œ€ํ•œ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ Summary Table์˜ ๋ณ€๊ฒฝ์ž‘์—…์„ ๊ฐ™์ด ํ•ด์ฃผ๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

 

์ฟผ๋ฆฌ์ž‘์—…์„ ํ–ˆ์„๋•Œ ์‹œ๊ฐ„์„ ๋‹จ์ถ•ํ•˜์—ฌ ์„ฑ๋Šฅ์ž‘์—…์€ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, Application ๋‹จ์—์„œ ์ถ”๊ฐ€์ ์ธ ์ˆ˜์ •์ž‘์—…์„ ํ•ด์ฃผ์–ด์•ผํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

 

 

Materialized View ์‚ฌ์šฉ ํ•ด๊ฒฐ๋ฒ•

Materialized View๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” View ์ž…๋‹ˆ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์œ„์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด View์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ–๊ณ  ์žˆ์–ด ์ฟผ๋ฆฌ๋ฌธ์„ ์‹คํ–‰ํ–ˆ์„ ๋•Œ ๋น ๋ฅธ ์†๋„๋กœ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.  Summary Table์„ ์ด์šฉํ•˜๋Š” ๊ฒƒ๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ View Log๋ผ๋Š” ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ด์šฉํ•ด์„œ ๋™๊ธฐํ™” ์ž‘์—…์„ ํ•ฉ๋‹ˆ๋‹ค. ์›๋ณธ๋ฐ์ดํ„ฐ์˜ ์ˆ˜์ •๋œ ๋ถ€๋ถ„๋งŒ ๊ธฐ๋กํ•˜์—ฌ ๋™๊ธฐํ™” ์ž‘์—…์„ ํ•ฉ๋‹ˆ๋‹ค.

 

Materialized View๋Š” Optimizer๊ฐ€ ์‹คํ–‰๊ณ„ํš์„ ์ž‘์„ฑํ•  ๋•Œ ์ฐธ์กฐํ•˜์—ฌ ์ž๋™์œผ๋กœ ๋น ๋ฅธ ๋ฐฉ๋ฒ•์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์‹ค์Šต์„ ํ†ตํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

Advisor๋ฅผ ์ด์šฉํ•œ ์‹ค์Šต

์‹ค์Šตํ™˜๊ฒฝ

OS : Red Hat Enterprise Linux Server release 6.10
DB : Oracle 12.1.0.2
SID : testdb

 

dbms_advisor.tune_mview

์˜ค๋ผํด์—์„œ ์ œ๊ณตํ•ด์ฃผ๋Š” advisor ํŒจํ‚ค์ง€๋ฅผ ์ด์šฉํ•ด์„œ Materialized View์ƒ์„ฑ ๊ฐ€์ด๋“œ๋ฅผ ํ•˜๋‚˜ ๋ฐ›์•„์„œ ์ง„ํ–‰ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ์ƒ˜ํ”Œ ์Šคํ‚ค๋งˆ SH๊ฐ€ ๊ฐ–๊ณ  ์žˆ๋Š” ํ…Œ์ด๋ธ”๋กœ ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

[testdb@host01 ~]$ sqlplus / as sysdba
SYS@testdb> desc dbms_advisor

dbms_advisor.tune_mview์—์„œ ํ•„์š”ํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. TASK_NAME์€ IN/OUT Type์œผ๋กœ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ํ•˜๋‚˜ ์ง€์ •ํ•ด์ค˜์•ผํ•˜๊ณ  MV_CREATE_STMT์—๋Š” Materialized View๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ๋„ฃ์–ด ๊ฐ€์ด๋“œ๋ฅผ ๋ฐ›๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

SYS@testdb> grant advisor to sh;

advisor ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ sh์—๊ฒŒ ๋ถ€์—ฌํ•ด์คฌ์Šต๋‹ˆ๋‹ค.

 

 

 

 

 

SYS@testdb> conn sh/sh
SH@testdb> 
declare
	tune_mv varchar2(20) := 'mview_task';
begin
dbms_advisor.tune_mview
(
task_name=>tune_mv,
mv_create_stmt=>'create materialized view c_s_mv
enable query rewrite
as
select 
c.cust_id
,s.channel_id
,avg(s.amount_sold)
from customers c, sales s
where c.cust_id = s.cust_id
group by c.cust_id, s.channel_id'
);
end;
/

PL/SQL procedure successfully completed.

dmms_advisor.tune_mview๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์‹คํ–‰ ํ›„ user_tune_mview ๋ทฐ๋ฅผ ํ†ตํ•ด ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

SH@testdb> set long 10000
SH@testdb> select * from user_tune_mview;

CLOB ํƒ€์ž…์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— long ๊ฐ’์„ ๋„‰๋„‰ํ•˜๊ฒŒ ์ฃผ๊ณ  ๊ฒฐ๊ณผ๋ฅผ ์กฐํšŒํ•ด๋ดค์Šต๋‹ˆ๋‹ค. ์œ„ ๋‚ด์šฉ์€ ์ฐจ๋ก€๋Œ€๋กœ VIEW lOG์™€ Materialized View๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. alter์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ๋‚ด์šฉ์„ ์ œ์™ธํ•˜๊ณ  create๋ถ€๋ถ„์˜ ๋‚ด์šฉ์„ ์•Œ์•„๋ณด๊ธฐ ์‰ฝ๊ฒŒ ์ •๋ฆฌํ•˜๊ณ  ์‹คํ–‰๊นŒ์ง€ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

Materialized View ์ƒ์„ฑ

SYS@testdb> grant query rewrite to sh;
SYS@testdb> grant create materialized view to sh;

์ƒ์„ฑ์ž‘์—…์ด ์•ˆ๋  ๊ฒฝ์šฐ ์œ„์˜ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ด์ฃผ์„ธ์š”.

 

SH@testdb> CREATE MATERIALIZED VIEW LOG ON "SH"."SALES" 
WITH ROWID, SEQUENCE ("CUST_ID","CHANNEL_ID","AMOUNT_SOLD")  
INCLUDING NEW VALUES;

Materialized view log created.


SH@testdb> CREATE MATERIALIZED VIEW LOG ON "SH"."CUSTOMERS"
WITH ROWID, SEQUENCE ("CUST_ID")	
INCLUDING NEW VALUES;

Materialized view log created.


SH@testdb> CREATE MATERIALIZED VIEW SH.C_S_MV   
REFRESH FAST WITH ROWID 
ENABLE QUERY REWRITE 
AS 
SELECT 
SH.SALES.CHANNEL_ID C1,
SH.SALES.CUST_ID C2, 
SUM("SH"."SALES"."AMOUNT_SOLD") M1, COUNT("SH"."SALES"."AMOUNT_SOLD") M2,
COUNT(*) M3 FROM SH.CUSTOMERS, 
SH.SALES 
WHERE SH.SALES.CUST_ID = SH.CUSTOMERS.CUST_ID 
GROUP BY SH.SALES.CHANNEL_ID, SH.SALES.CUST_ID;

Materialized view created.

์ฟผ๋ฆฌ๋ฅผ ํ•˜๋‚˜์”ฉ ์‚ดํŽด๋ณด๋ฉด ์กฐ์ธ์ž‘์—…์„ ํ•˜๋Š” ํ…Œ์ด๋ธ”์— ๋™๊ธฐํ™” ์ž‘์—…์„ ์œ„ํ•œ View Log ํ•˜๋‚˜์”ฉ ์ƒ์„ฑํ•˜๊ณ , Materialized View๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ฟผ๋ฆฌํ•˜๋‚˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿฐ๋ฐ ๋ถ„์„์„ ์š”์ฒญํ•œ MView ์ƒ์„ฑ ์ฟผ๋ฆฌ๊ฐ€ ์กฐ๊ธˆ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. Average๋ฅผ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ, SUM๊ณผ COUNT์— ๋Œ€ํ•œ ์ปฌ๋Ÿผ์„ ์ด์šฉํ•ด์„œ ๊ฒฐ๊ณผ๊ฐ€ ์ž‘์„ฑ๋˜์—ˆ๋Š”๋ฐ ์™œ ์ด๋Ÿฐ ๊ฒฐ๊ณผ๋ฅผ ๊ถŒํ–ˆ์„๊นŒ์š”?

 

MView๋ฅผ ๋” ๋งŽ์€ ๋ฒ”์œ„์—์„œ Optimizer๊ฐ€ ์ฐธ์กฐํ•˜๋„๋ก AVGํ•จ์ˆ˜๋ฅผ SUM๊ณผ COUNT๋กœ ๋‚˜๋ˆˆ ๊ฒƒ ์ž…๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ๊ฐ€ AVG๊ฐ€ ์•„๋‹Œ SUM์ด๋‚˜ COUNT์— ๋Œ€ํ•œ ์ž‘์—…์ด ๋“ค์–ด์™”์„ ๋•Œ๋„ Optimizer๊ฐ€ ์ฐธ์กฐํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. AVGํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ MView๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ทธ๋ ‡๊ฒŒ๋˜๋ฉด SUM์ด๋‚˜ COUNT์— ๋Œ€ํ•œ ์ž‘์—…์ด ๋“ค์–ด์™”์„ ๋•Œ ์„ฑ๋Šฅ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด์„œ ๋‹ค์‹œ MView๋ฅผ ๋งŒ๋“œ๋Š” ๋ถˆํŽธํ•จ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ถ„๋ฆฌํ•ด์„œ ํ•œ๋ฒˆ์— MView๋ฅผ ์ƒ์„ฑํ•˜๋„๋ก ๊ถŒ์žฅํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Optimizer์—์„œ ์‹คํ–‰ ๊ณ„ํš์„ ๋งŒ๋“ค ๋•Œ Query์˜ Re-Write ์ž‘์—…์„ ์ง„ํ–‰ํ•˜์—ฌ SUM๊ณผ COUNT๊ฒฐ๊ณผ๋ฅผ ๊ฐ–๊ณ  AVG์˜ ๊ฐ’์„ ์‚ฐ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

์กฐํšŒ ํ™•์ธ ์ž‘์—…

SH@testdb> set autot trace explain

์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ–ˆ์„ ๋•Œ ์‹คํ–‰๊ณ„ํš๋งŒ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

 

SH@testdb> 
select 
    c.cust_id
    ,s.channel_id
    ,avg(s.amount_sold)
from customers c, sales s
where c.cust_id = s.cust_id
group by c.cust_id, s.channel_id;

๋ทฐ์˜ ์ฟผ๋ฆฌ๋กœ ์กฐํšŒํ–ˆ์„ ๋•Œ MView๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์กฐํšŒํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

SH@testdb> 
select 
    c.cust_id
    ,sum(s.amount_sold)
from customers c, sales s
where c.cust_id = s.cust_id
group by c.cust_id;

sum์œผ๋กœ๋งŒ ์กฐํšŒํ–ˆ์„๋•Œ๋„ MView๋ฅผ ์กฐํšŒํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ์„ฑ์ฟผ๋ฆฌ์™€ ๋™์ผํ•˜์ง€๋Š” ์•Š์•„, ํ•ด๋‹น ๋ทฐ์—์„œ ํ•œ๋ฒˆ๋” ๊ฑธ๋Ÿฌ๋‚ด๋Š” ์ž‘์—…์„ ํ•˜๋Š” ๊ฒƒ๋„ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

 

SH@testdb> set autot off
SH@testdb> 
select 
    segment_name
    ,segment_type 
from user_segments 
where segment_name = 'C_S_MV';

์„ธ๊ทธ๋จผํŠธ๋ฅผ ์กฐํšŒํ–ˆ์„๋•Œ VIEW์™€๋Š” ๋‹ค๋ฅด๊ฒŒ TABLE Type์œผ๋กœ ์กฐํšŒ๊ฐ€ ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

Materialized View ์ƒ์„ฑ ๋ฌธ๋ฒ•

์‹ค์Šต์€ Advisor๋ฅผ ์ด์šฉํ•ด์„œ ๊ถŒ์žฅ๋˜๋Š” ์ƒ์„ฑ ์ฟผ๋ฆฌ๋ฅผ ๋ฐ›์•„์„œ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. Materialized View๋ฅผ ์ƒ์„ฑํ• ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ์˜ต์…˜๋“ค์„ ๋ช‡๊ฐ€์ง€ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

create materialized view <๋ทฐ๋ช…>
build immediate
refresh [on demand | on commit]
[complete | fast | force | never]
enable query rewrite
as
<์„œ๋ธŒ์ฟผ๋ฆฌ>;
build immediate

MView ์ƒ์„ฑ ํ•˜๋ฉด์„œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ  MView์— ์ €์žฅ

 

on demand

dbms_mview ํŒจํ‚ค์ง€๋ฅผ ์ด์šฉํ•ด์„œ ๋™๊ธฐํ™” ์ž‘์—…

 

on commit

commit ๋ช…๋ น ์‚ฌ์šฉ์‹œ ์ž๋™ ๋™๊ธฐํ™” ์ž‘์—…

 

complete

๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ๋™๊ธฐํ™”

 

fast

์ˆ˜์ •๋œ ๋ฐ์ดํ„ฐ๋งŒ ๋™๊ธฐํ™” ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ Materialized View Log ์˜ค๋ธŒ์ ํŠธ ์ƒ์„œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

 

force

fast ๊ธฐ์—…๊ณผ complete ๋ณ‘ํ–‰ ์‚ฌ์šฉ

 

never

๋™๊ธฐํ™” ํ•˜์ง€ ์•Š์Œ

 

enable query rewrite

์ด ์˜ต์…˜์€ ํ•„์ˆ˜๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ ์‹คํ–‰ํ–ˆ์„๋•Œ Optimizer๊ฐ€ ํ•ด๋‹น MView๋ฅผ ์ฐธ์กฐํ•˜์—ฌ Query Re-Write์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

 

๋Œ“๊ธ€