Day 26

๋ทฐ๋Š” ํ…Œ์ด๋ธ”๊ณผ ๊ฐ™์€ ๋ถ€๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ์ฒด

๋ทฐ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ์ฒด๋ž€ ํ…Œ์ด๋ธ”์ด๋‚˜ ์ธ๋ฑ์Šค ๋“ฑ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์•ˆ์— ์ •์˜ํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์˜๋ฏธ ๋ณธ๋ž˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ์ฒด๋กœ ๋“ฑ๋กํ•  ์ˆ˜ ์—†๋Š” SELECT ๋ช…๋ น์„, ๊ฐ์ฒด๋กœ์„œ ์ด๋ฆ„์„ ๋ถ™ํ˜€์„œ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ ๊ฐ์ฒด์ด๋‹ค select๋Š” ๋‹จ์ง€ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์ด ๋์ด์ง€๋งŒ, ๋ทฐ๋ฅผ ์ฐธ์กฐํ•จ์œผ๋กœ์จ ๊ทธ์— ์ •์˜๋œ SELECT ๋ช…๋ น์˜ ์‹คํ–‰๊ฒฐ๊ณผ๋ฅผ ํ…Œ์ด๋ธ”์ฒ˜๋Ÿผ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

SELECT * FROM (SELECT * FROM sample54) sq;

์ด๋ ‡๊ฒŒ ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋˜ ๊ฒƒ์„

SELECT * FROM sample_view_67;

์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค ์ด๊ฒŒ ๋ฌด์Šจ ์˜๋ฏธ๊ฐ€ ์žˆ๋ƒ๋ผ๊ณ  ํ•˜๋ฉด ์ƒ๊ฐ๋ณด๋‹ค ๊ธธ์–ด์ง€๋Š” ์ฟผ๋ฆฌ๋ฌธ์—์„œ GROUP BY๋“ฑ์œผ๋กœ ๋ฌถ๋‹ค๋ณด๋ฉด ์ •๋ง ๊ฐ€๋…์„ฑ์ธ ๋ถ€๋ถ„๋„ ๊ทธ๋ ‡๊ณ  ๊ฒน์น˜๋Š” SELECT ๋ฌธ์ด ์ƒ๊ธธ์ˆ˜๋„ ์žˆ์Œ ๊ทธ๋ž˜์„œ ๊ฒฐ๊ตญ์€ ์ž์ฃผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋ณต์žกํ•œ SELECT ๋ช…๋ น์„ ๋ทฐ๋กœ ๋งŒ๋“ค์–ด์„œ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ๊ธฐ์–ตํ•˜์ž

๊ฐ€์ƒ ํ…Œ์ด๋ธ”

๋ทฐ๋ฅผ ํ…Œ์ด๋ธ”์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์‹ค์ฒด๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€์ƒํ…Œ์ด๋ธ”์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆฌ์šด๋‹ค SELECT ๋ช…๋ น์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋Š” ๋ทฐ๋Š” ํ…Œ์ด๋ธ”์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ๋ฅผ ์“ฐ๊ฑฐ๋‚˜ ์ง€์šธ ์ˆ˜ ์žˆ๋Š” ์ €์žฅ๊ณต๊ฐ„์„ ๊ฐ€์ง€์ง€ ์•Š๋Š”๋‹ค ๊ทธ๋ž˜์„œ ๋ง‰ INSERT, UPDATE, DELETE ์™€ ๊ฐ™์€ ๋ช…๋ น์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ๊ทธ๋ƒฅ SELECT ํ• ๋•Œ๋งŒ ์‚ฌ์šฉํ•˜์ž....

๋ทฐ ์ž‘์„ฑ๊ณผ ์‚ญ์ œ

๋ทฐ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ์ฒด์ด๊ธฐ ๋•Œ๋ฌธ์— DDL๋กœ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•œ๋‹ค CREATE VIEW, DROP VIEW ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค

๋ทฐ์˜ ์ž‘์„ฑ

CREATE VIEW ๋ทฐ์ด๋ฆ„ AS SELECT ๋ช…๋ น

CREATE VIEW ๋‹ค์Œ์— ๋ทฐ์˜ ์ด๋ฆ„์„ ์ง€์ •ํ•˜๊ณ  AS๋กœ SELECT ๋ช…๋ น์„ ์ง€์ •ํ•ด์ค€๋‹ค ๋ทฐ๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ ์žˆ์–ด์„œ AS ๋Š” ์ƒ๋žต์ด ๋ถˆ๊ฐ€๋Šฅ ํ•˜๋‹ค๋Š” ์ 

CREATE VIEW๋กœ ๋ทฐ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  SELECT ์„ ๊ฑฐ๋Š”๋ฐ ์žˆ์–ด์„œ ํ•„์š”์— ๋”ฐ๋ผ์„œ ์—ด์˜ ์ˆœ์„œ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค

CREATE VIEW ๋ทฐ์ด๋ฆ„(์—ด1, ์—ด2, ...) AS SELECT ๋ช…๋ น

๋งŒ์•ฝ์— ์—ด ์ˆœ์„œ๋ฅผ ์ƒ๋žตํ•œ ๊ฒฝ์šฐ์—๋Š”, ์ž๋™์œผ๋กœ ๋ทฐ์˜ ์—ด์ด ์ง€์ •๋œ๋‹ค ๊ทธ๋ฆฌ๊ณ  SELECT ์™€ ๊ฐ™์€ ์ˆ˜์˜ ์—ด์„ ์ผ์ผ์ด ์ง€์ •ํ•ด์•ผ ํ•˜๋ฏ€๋กœ SELECT ๋ช…๋ น์˜ ๋ชจ๋“  ์—ด์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ์—๋Š” ์—ด์„ ์ง€์ •ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ๋” ์ข‹์„์ง€๋„?

๋ทฐ์˜ ์‚ญ์ œ

๋ทฐ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” DROP VIEW ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์‚ญ์ œํ•˜๊ณ  ์‚ญ์ œํ•˜๊ฒŒ ๋˜๋ฉด ๋”์ด์ƒ์€ ๋ทฐ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์ 

DROP VIEW ๋ทฐ๋ช…

๋ทฐ์˜ ์•ฝ์ 

์œ„์—์„œ ์–ธ๊ธ‰ํ–ˆ์ง€๋งŒ ๋ทฐ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ์ฒด์ด์ง€๋งŒ ์ €์žฅ๊ณต๊ฐ„์„ ํ•„์š”๋กœํ•˜์ง€ ์•Š๊ณ  CPU ์ž์›์„ ์žก์•„๋จน๋Š”๋‹ค SELECT๋Š” ๋‹จ์ˆœํ•˜๊ฒŒ ์กฐํšŒํ•ด์„œ ๋ฆฌํ„ดํ•ด์ฃผ๋Š” ๋ช…๋ น์ธ๋ฐ, ๊ฒ€์ƒ‰, ORDER BY, GROUP BY ๋“ฑ์œผ๋กœ ์ง‘๊ณ„ํ•˜๋Š”๋ฐ ๊ณ„์‚ฐ๋Šฅ๋ ฅ์ด ํ•„์š”ํ•ด์„œ CPU๋ฅผ ์‚ฌ์šฉ

๋จธํ„ฐ๋ฆฌ์–ผ๋ผ์ด์ฆˆ๋“œ ๋ทฐ(Materialized View)

๋ทฐ์˜ ๊ทผ์›์ด ๋˜๋Š” ํ…Œ์ด๋ธ”์— ๋ณด๊ด€ํ•˜๋Š” ๋ฐ์ดํ„ฐ์–‘์ด ๋งŽ๊ฑฐ๋‚˜ ๋ทฐ๋ฅผ ์ค‘์ฒฉํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ๋–จ์–ด์ง€๊ธฐ ์‰ฝ๋‹ค ์ด๋Ÿฐ ์ƒํ™ฉ์„ ํšŒํ”ผํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋จธํ„ฐ๋ฆฌ์–ผ๋ผ์ด์ฆˆ๋“œ ๋ทฐ์ด๋‹ค ์ผ๋ฐ˜์ ์œผ๋กœ ๋ทฐ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ผ์‹œ์ ์œผ๋กœ ์ €์žฅํ–ˆ๋‹ค๊ฐ€ ์ฟผ๋ฆฌ๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ ํ•จ๊ป˜ ์‚ญ์ œ๋œ๋‹ค ํ•˜์ง€๋งŒ ๋จธํ„ฐ๋ฆฌ์–ผ๋ผ์ด์ฆˆ๋“œ ๋ทฐ๋Š” ํ…Œ์ด๋ธ”์ฒ˜๋Ÿผ ์ €์žฅ์žฅ์น˜์— ์ €์žฅํ•ด๋‘๊ณ  ์‚ฌ์šฉ ์ด๋ ‡๊ฒŒ ์ €์žฅํ•ด๋‘๊ณ  ์‚ฌ์šฉํ•˜๊ฒŒ๋˜๋ฉด ์ด๋ฏธ ํ•œ๋ฒˆ ์ฐธ์กฐํ–ˆ๋˜ ๋ทฐ๋ฅผ ๋‹ค์‹œ ํ•œ ๋ฒˆ ์ฐธ์กฐํ•˜๊ฒŒ ๋˜๋ฉด ์ฒ˜์Œ์— ์ฐธ์กฐํ•  ๋•Œ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ ํ•˜์ง€๋งŒ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋œ ๊ฒฝ์šฐ์—๋Š” SELECT๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•ด์„œ ๋‹ค์‹œ ์ €์žฅํ•œ๋‹ค ๋‹ค๋ฅธ์ ์ด ์žˆ๋‹ค๋ฉด ์ผ๋ฐ˜ ๋ทฐ์ฒ˜๋Ÿผ ๋งค๋ฒˆ SELECT ํ• ํ•„์š” ์—†๋‹ค๋Š”์ ์ด๋‹ค ๋ฌผ๋ก  ์ด ๋ชจ๋“ ๊ฑด RDBMS๊ฐ€ ์•Œ์•„์„œ ํ•ด์ค€๋‹ค ํ•˜์ง€๋งŒ Oracle, DB2์—์„œ๋งŒ ์ง€์›ํ•˜๊ณ  MySQL์—์„œ๋Š” ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค

Last updated

Was this helpful?