- ์ฃผ์ด์ง query ํ๊ฐ๋ฅผ ์ํ ๋์์ ๋ฐฉ๋ฒ๋ค
- ๋๋ฑํ(Equivalent) ํํ์
- ๊ฐ ์ฐ์ฐ์ ์ํ ๋ค๋ฅธ algorithm
- Query ์์: Music department ๊ฐ์ฌ์ ์ด๋ฆ๊ณผ ๊ทธ๋ค์ด ๊ฐ๋ฅด์น๋ ๊ณผ๋ชฉ์ title ๊ฒ์
- ฮ name,ย titleโ(ฯdept_name=ย โMusicโโ(instructorโ(teachesโฮ course_id,ย titleโ(course))))
- Evaluation plan: ๊ฐ ์ฐ์ฐ์ ์ฌ์ฉ๋๋ algorithm ๋ฐ ์ฐ์ฐ ์คํ ๋ฐฉ์ (materialized/pipelined) ์ ์
- Query์ ๋ํ evaluation plan ๊ฐ์ ๋น์ฉ ์ฐจ์ด๋ ๋ง๋ํ ์ ์์ (์: ์ด vs. ์ผ)
- Cost-based query optimization ๋จ๊ณ:
- ๋
ผ๋ฆฌ์ ์ผ๋ก ๋๋ฑํ(equivalent) ํํ์ ์์ฑ (๋๋ฑ์ฑ ๊ท์น(equivalence rules) ์ฌ์ฉ)
- ๋์์ query plan์ ์ป๊ธฐ ์ํด ๊ฒฐ๊ณผ ํํ์์ ์ฃผ์(annotate) ์ถ๊ฐ
- ์ถ์ ๋ ๋น์ฉ(estimated cost)์ ๊ธฐ๋ฐํ์ฌ ๊ฐ์ฅ ์ ๋ ดํ plan ์ ํ
- Plan ๋น์ฉ ์ถ์ ๊ธฐ๋ฐ:
- Relation์ ๋ํ ํต๊ณ ์ ๋ณด (์: tuple ์, attribute์ distinct ๊ฐ ์)
- ์ค๊ฐ ๊ฒฐ๊ณผ์ ๋ํ ํต๊ณ ์ถ์ (๋ณต์กํ ํํ์ ๋น์ฉ ๊ณ์ฐ์ฉ)
- Algorithm์ ๋ํ ๋น์ฉ ๊ณต์ (ํต๊ณ ์ฌ์ฉ)
- ๋ ๊ด๊ณ๋์(relational algebra) ํํ์์ด ๋ชจ๋ legal database instance์์ ๋์ผํ tuple ์งํฉ์ ์์ฑํ๋ฉด ๋๋ฑ(equivalent)ํ๋ค๊ณ ํจ (Tuple ์์ ๋ฌด๊ด)
- SQL์์ ์
์ถ๋ ฅ์ tuple์ multiset (์ค๋ณต ํ์ฉ ์งํฉ)
- Multiset ๋ฒ์ ์ ๊ด๊ณ๋์์์ ๋ ํํ์์ด ๋ชจ๋ legal database instance์์ ๋์ผํ multiset์ ์์ฑํ๋ฉด ๋๋ฑํ๋ค๊ณ ํจ
- Equivalence rule: ๋ ํํ์ ํํ์์ด ๋๋ฑํจ์ ์๋ฏธ (์ํธ ๊ต์ฒด ๊ฐ๋ฅ)
- Conjunctive selection ์ฐ์ฐ์ ๊ฐ๋ณ selection์ sequence๋ก ๋ถํด ๊ฐ๋ฅ (cascade of ฯ)
- ฯฮธ1โโงฮธ2โโ(E)โกฯฮธ1โโ(ฯฮธ2โโ(E))
- Selection ์ฐ์ฐ์ ๊ตํ ๊ฐ๋ฅ(commutative)
- ฯฮธ1โโ(ฯฮธ2โโ(E))โกฯฮธ2โโ(ฯฮธ1โโ(E))
- Projection ์ฐ์ฐ sequence์์๋ ๋ง์ง๋ง ํ๋๋ง ํ์
- ฮ L1โ(ฮ L2โ(โฆ(ฮ Lnโ(E))โฆ))โกฮ L1โ(E), (๋จ, L1โโL2โโฏโLnโ)
- Selection์ Cartesian product ๋ฐ theta join๊ณผ ๊ฒฐํฉ ๊ฐ๋ฅ
- a. ฯฮธโ(E1โรE2โ)โกE1โโฮธโE2โ
- b. ฯฮธ1โโ(E1โโฮธ2โโE2โ)โกE1โโฮธ1โโงฮธ2โโE2โ
- Theta join (๋ฐ natural join)์ ๊ตํ ๊ฐ๋ฅ
- E1โโฮธโE2โโกE2โโฮธโE1โ
- (a) Natural join์ ๊ฒฐํฉ ๊ฐ๋ฅ(associative)
- (E1โโE2โ)โE3โโกE1โโ(E2โโE3โ)
- (b) Theta join์ ๊ฒฐํฉ ๋ฒ์น
- (E1โโฮธ1โโE2โ)โฮธ2โโงฮธ3โโE3โโกE1โโฮธ1โโงฮธ3โโ(E2โโฮธ2โโE3โ) (๋จ, ฮธ2โ๋ E2โ,E3โ์ attribute๋ง ํฌํจ)
- Selection ์ฐ์ฐ์ ๋ค์ ๋ ์กฐ๊ฑด ํ์ theta join์ ๋ถ๋ฐฐ ๊ฐ๋ฅ
- (a) ฮธ0โ์ ๋ชจ๋ attribute๊ฐ join ๋๋ ํํ์ ์ค ํ๋(E1โ)์ attribute๋ง ํฌํจ
- ฯฮธ0โโ(E1โโฮธโE2โ)โก(ฯฮธ0โโ(E1โ))โฮธโE2โ
- (b) ฮธ1โ์ด E1โ์ attribute๋ง, ฮธ2โ๊ฐ E2โ์ attribute๋ง ํฌํจ
- ฯฮธ1โโงฮธ2โโ(E1โโฮธโE2โ)โก(ฯฮธ1โโ(E1โ))โฮธโ(ฯฮธ2โโ(E2โ))
- Projection ์ฐ์ฐ์ theta join์ ๋ค์๊ณผ ๊ฐ์ด ๋ถ๋ฐฐ ๊ฐ๋ฅ
- (a) L1โ,L2โ๊ฐ ๊ฐ๊ฐ E1โ,E2โ์ attribute์ด๊ณ ฮธ๊ฐ L1โโชL2โ์ attribute๋ง ํฌํจ
- ฮ L1โโชL2โโ(E1โโฮธโE2โ)โกฮ L1โโ(E1โ)โฮธโฮ L2โโ(E2โ)
- (b) ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ (E1โโฮธโE2โ), L1โโE1โ,L2โโE2โ. L3โ๋ E1โ์ attribute (join ์กฐ๊ฑด ฮธ์ ํฌํจ๋์ง๋ง L1โโชL2โ์๋ ๋ฏธํฌํจ), L4โ๋ E2โ์ attribute (join ์กฐ๊ฑด ฮธ์ ํฌํจ๋์ง๋ง L1โโชL2โ์๋ ๋ฏธํฌํจ)
- ฮ L1โโชL2โโ(E1โโฮธโE2โ)โกฮ L1โโชL2โโ(ฮ L1โโชL3โโ(E1โ)โฮธโฮ L2โโชL4โโ(E2โ))
- ์งํฉ ์ฐ์ฐ union(โช)๊ณผ intersection(โฉ)์ ๊ตํ ๊ฐ๋ฅ (Set difference(โ)๋ ์๋)
- Set union๊ณผ intersection์ ๊ฒฐํฉ ๊ฐ๋ฅ
- Selection ์ฐ์ฐ์ โช, โฉ, โ ์ ๋ถ๋ฐฐ ๊ฐ๋ฅ
- a. ฯฮธโ(E1โโชE2โ)โกฯฮธโ(E1โ)โชฯฮธโ(E2โ)
- b. ฯฮธโ(E1โโฉE2โ)โกฯฮธโ(E1โ)โฉฯฮธโ(E2โ)
- c. ฯฮธโ(E1โโE2โ)โกฯฮธโ(E1โ)โฯฮธโ(E2โ)
- d. ฯฮธโ(E1โโฉE2โ)โกฯฮธโ(E1โ)โฉE2โ (โช ์๋ ์ฑ๋ฆฝ ์ ํจ)
- e. ฯฮธโ(E1โโE2โ)โกฯฮธโ(E1โ)โE2โ
- Projection ์ฐ์ฐ์ union์ ๋ถ๋ฐฐ ๊ฐ๋ฅ (๋จ, E1โ,E2โ schema ๋์ผ)
- ฮ Lโ(E1โโชE2โ)โก(ฮ Lโ(E1โ))โช(ฮ Lโ(E2โ))
- Selection์ ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ ์ํํ๋ฉด joinํ relation์ ํฌ๊ธฐ ๊ฐ์
- Query ์
- ฮ name,ย titleโ(ฯdept_name=ย โMusicโโ(instructorโ(teachesโฮ course_id,ย titleโ(course))))
- ๊ท์น 7a๋ฅผ ์ด์ฉํ ๋ณํ
- ฮ name,ย titleโ(ฯdept_name=ย โMusicโโ(instructor)โ(teachesโฮ course_id,ย titleโ(course)))
- Query: "2017๋
์ ๊ฐ์๋ฅผ ๋ด๋นํ ์์
ํ๊ณผ ์์ ๋ชจ๋ ๊ต์์ง์ ์ฑ๋ช
์ ํด๋น ๊ต์์ง์ด ๋ด๋นํ ๊ฐ์ ์ ๋ชฉ๊ณผ ํจ๊ป ์ฐพ์์ฃผ์ธ์."
- ฮ name,ย titleโ(ฯdept_name=ย โMusicโโงyear=2017โ(instructorโ(teachesโฮ course_id,ย titleโ(course))))
- Join associatively (๊ท์น 6a) ๋ณํ
- ฮ name,ย titleโ(ฯdept_name=ย โMusicโโงyear=2017โ((instructorโteaches)โฮ course_id,ย titleโ(course)))
- ๋ ๋ฒ์งธ ํํ๋ 'selection ์กฐ๊ธฐ ์ํ' ๊ท์น ์ ์ฉ ๊ธฐํ ์ ๊ณต (๊ท์น 7a, 7b)
- ฯdept_nameย =ย โMusicโโ(instructor)โฯyearย =ย 2017โ(teaches)

- Projection์ ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ ์ํํ๋ฉด joinํ relation์ ํฌ๊ธฐ ๊ฐ์
- ฮ name,ย titleโ((ฯdept_name=ย โMusicโโ(instructor)โteaches)โฮ course_id,ย titleโ(course))
- (ฯdept_nameย =ย โMusicโโ(instructor)โteaches) ๊ณ์ฐ ์,
- schema๋
(ID, name, dept_name, salary, course_id, sec_id, semester, year)
- ์ด ์ค
course_id (join์ฉ)์ name (output์ฉ)๋ง ํ์ - ๋๋ฑ์ฑ ๊ท์น 8a, 8b๋ฅผ ์ฌ์ฉํ projection push
- ฮ name,ย titleโ(ฮ name,ย course_idโ(ฯdept_name=ย โMusicโโ(instructor)โteaches))โฮ course_id,ย titleโ(course))
- ๋ชจ๋ relation r1โ,r2โ,r3โ์ ๋ํด (r1โโr2โ)โr3โ=r1โโ(r2โโr3โ) (Join Associativity)
- ๋ง์ฝ r2โโr3โ์ด ๋งค์ฐ ํฌ๊ณ r1โโr2โ๊ฐ ์๋ค๋ฉด, (r1โโr2โ)โr3โ๋ฅผ ์ ํํ์ฌ ๋ ์์ ์์ relation ๊ณ์ฐ ๋ฐ ์ ์ฅ
- ์: ฮ name,ย titleโ((ฯdept_name=ย โMusicโโ(instructor)โteaches)โฮ course_id,ย titleโ(course))
- teachesโฮ course_id,ย titleโ(course)๋ฅผ ๋จผ์ ๊ณ์ฐํ ์ ์์ผ๋, ์ฒซ join ๊ฒฐ๊ณผ๊ฐ ํฐ relation์ผ ๊ฐ๋ฅ์ฑ ๋์
- Music department ๊ฐ์ฌ ๋น์จ์ ๋ฎ์ ๊ฒ์ด๋ฏ๋ก, ฯdept_name=ย โMusicโโ(instructor)โteaches๋ฅผ ๋จผ์ ๊ณ์ฐํ๋ ๊ฒ์ด ๋ ์ข์
- Database system catalog๋ ๋ค์ ํต๊ณ ์ ๋ณด ์ ์ฅ
- nrโ: relation r์ tuple ์
- brโ: r์ tuple์ ํฌํจํ๋ block ์
- lrโ: r์ tuple ํฌ๊ธฐ
- frโ: r์ blocking factor (ํ block์ ๋ง๋ r์ tuple ์)
- ๋ฌผ๋ฆฌ์ ์ผ๋ก r์ tuple์ด ํ์ผ์ ํจ๊ป ์ ์ฅ๋๋ฉด
- brโ=โnrโ/frโโ
- V(A,ย r): attribute A์ ๋ํด r์ ๋ํ๋๋ distinct ๊ฐ์ ์ (ฮ Aโ(r)์ ํฌ๊ธฐ์ ๋์ผ)
- Index์ ๋ํ ํต๊ณ๋ catalog์ ์ ์ง
- fiโ: B+-tree ๊ฐ์ tree ๊ตฌ์กฐ index i์ internal node์ ํ๊ท fan-out
- HTiโ: index i์ level ์ (๋์ด). B+-tree์ ๊ฒฝ์ฐ HTiโ=โlogfiโโ(V(A,r))โ. Hash index๋ HTiโ=1
- LBiโ: i์ ๊ฐ์ฅ ๋ฎ์ level์ index block ์ (leaf level block ์)
- ์ค์ optimizer๋ ์ข
์ข
์ถ๊ฐ ํต๊ณ ์ ๋ณด ์ ์ง
- ๋๋ถ๋ถ์ database๋ ๊ฐ attribute์ ๊ฐ ๋ถํฌ๋ฅผ histogram์ผ๋ก ์ ์ฅ
- Equi-width histograms: ๊ฐ์ ๋ฒ์๋ฅผ ๋์ผํ ํฌ๊ธฐ์ ๋ฒ์๋ก ๋ถํ
- Equi-depth histograms: ๊ฐ ๋ฒ์๊ฐ (๊ฑฐ์) ๋์ผํ ์์ tuple์ ๊ฐ๋๋ก ๋ฒ์ ๋ถํ (๋ ์ ํธ๋จ)
- ๋ง์ database๋ n๊ฐ์ ๊ฐ์ฅ ๋น๋ฒํ ๊ฐ(most-frequent values)๊ณผ ๊ทธ ๊ฐ์(count)๋ฅผ ์ ์ฅ
- Histogram ๋ฐ ๊ธฐํ ํต๊ณ๋ ๋ณดํต random sample ๊ธฐ๋ฐ์ผ๋ก ๊ณ์ฐ
- ํต๊ณ๊ฐ ์ต์ ์ด ์๋ ์ ์์ (
analyze ๋ช
๋ น ํ์ ๋๋ ์๋ ์ฌ๊ณ์ฐ) - ์: relation ์์ tuple์ ๊ฐ์๊ฐ ๋ช % ๋ณํํ๋ ๊ฒฝ์ฐ
- ์ด์ ์ฐ์ฐ์ output์ input์ผ๋ก ๋ฐ๋ ์ค๊ฐ ์ฐ์ฐ์ ๋น์ฉ ์ถ์ ๋ฐฉ๋ฒ?
- E1โ,E2โ,E3โ ํต๊ณ๋ ์์ง๋ง E1โโE2โ ํต๊ณ๋ ์์
- ๊ฐ ์ฐ์ฐ output์ ๋ํ ํต๊ณ ๊ฐ '์ถ์ ' ํ์
- ฯA=vโ(r)
- nrโ/V(A,r): selection์ ๋ง์กฑํ ๊ฒ์ผ๋ก ์ถ์ ๋๋ record ์ (A ๊ฐ์ด ๋์ผํ tuple์ ํ๊ท ์)
- Key attribute์ ๋ํ ๋๋ฑ ์กฐ๊ฑด: ํฌ๊ธฐ ์ถ์ = 1
- ฯAโคvโ(r) ( ฯAโฅvโ(r)๋ ๋์นญ)
- Attribute ๊ฐ์ 'uniform' ๋ถํฌ ๊ฐ์
- c = ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์ถ์ tuple ์
- min(A,ย r)๊ณผ max(A,ย r)์ catalog์์ ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉด:
- c=0, (if v<min(A,ย r))
- c=nrโ, (if vโฅmax(A,ย r))
- c=nrโโ
max(A,ย r)โmin(A,ย r)vโmin(A,ย r)โ, (otherwise)
- Histogram ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉด ์ ์ถ์ ์น ๊ฐ์ ๊ฐ๋ฅ
- ํต๊ณ ์ ๋ณด ๋ถ์ฌ ์, c=2nrโโ๋ก ๊ฐ์

- ์กฐ๊ฑด ฮธiโ์ Selectivity: relation r์ tuple์ด ฮธiโ๋ฅผ ๋ง์กฑํ ํ๋ฅ
- siโ๊ฐ r์์ ๋ง์กฑํ๋ tuple ์ (์ด์ ์ฌ๋ผ์ด๋์์ ์ถ์ )์ด๋ฉด, ฮธiโ์ selectivity๋ siโ/nrโ
- Conjunction
- ฯฮธ1โโงฮธ2โโงโฏโงฮธnโโ(r)
- ๊ฒฐ๊ณผ tuple ์ถ์ ์น (๋
๋ฆฝ์ฑ ๊ฐ์ )
- nrโโ
(nrโs1โโ)โ
(nrโs2โโ)โฏ(nrโsnโโ)
- Disjunction
- ฯฮธ1โโจฮธ2โโจโฏโจฮธnโโ(r)
- ์ถ์ tuple ์
- nrโ(1โ(1โnrโs1โโ)(1โnrโs2โโ)โฆ(1โnrโsnโโ))
- Negation
- ฯยฌฮธโ(r)
- ์ถ์ tuple ์
- nrโ โ (ฯฮธโ(r)์ ์ถ์ tuple ์)
- ์์ Query:
student โ takes - Catalog ์ ๋ณด:
- nstudentโ=5000
- fstudentโ=50, bstudentโ=100
- ntakesโ=10000
- ftakesโ=25, btakesโ=400
- V(ID,ย takes)=2500 (๊ณผ๋ชฉ์ ์๊ฐํ ํ์์ ํ๊ท 4๊ณผ๋ชฉ ์๊ฐ)
takes์ ID๋ student๋ฅผ ์ฐธ์กฐํ๋ foreign key- V(ID,ย student)=5000 (primary key)
- Cartesian product rรs๋ nrโโ
nsโ ๊ฐ์ tuple ํฌํจ. ๊ฐ tuple์ lrโ+lsโ bytes
- rโs=rรs, (if RโฉS=โ
)
- RโฉS๊ฐ R์ key์ธ ๊ฒฝ์ฐ
- s์ tuple์ r์ ์ต๋ 1๊ฐ tuple๊ณผ join. ( rโs์ tuple ์) โคnsโ
- RโฉS๊ฐ S์์ R์ ์ฐธ์กฐํ๋ foreign key์ธ ๊ฒฝ์ฐ: (rโs์ tuple ์) =nsโ (foreign key ์ ์ฝ์กฐ๊ฑด ๋๋ฌธ)
student โ takes ์์ : takes์ ID๋ student๋ฅผ ์ฐธ์กฐํ๋ foreign key, ๋ฐ๋ผ์ ๊ฒฐ๊ณผ๋ ntakesโ (10000)๊ฐ์ tuple ๊ฐ์ง- RโฉS={A}๊ฐ R ๋๋ S์ key๊ฐ ์๋ ๊ฒฝ์ฐ:
- R์ ๋ชจ๋ tuple t๊ฐ RโS์์ tuple์ ์์ฑํ๋ค๊ณ ๊ฐ์ ํ๋ฉด, RโS์ tuple ์ ์ถ์
- V(A,ย s)nrโโ
nsโโ
- ๋ฐ๋์ ๊ฒฝ์ฐ (S ๊ธฐ์ค) ์ถ์
- V(A,ย r)nrโโ
nsโโ
- ์ด ๋ ์ถ์ ์น ์ค ๋ฎ์ ๊ฐ์ด ์๋ง๋ ๋ ์ ํ (join์ ์ฐธ์ฌํ์ง ์๋ dangling tuple ์กด์ฌ ๊ฐ๋ฅ)
- Foreign key ์ ๋ณด ์์ด
student โ takes ํฌ๊ธฐ ์ถ์ : - V(ID,ย takes)=2500, V(ID,ย student)=5000
- ๋ ์ถ์ ์น
- (5000โ
10000)/2500=20000 ๋ฐ (5000โ
10000)/5000=10000
- ๋ ๋ฎ์ ์ถ์ ์น 10000 ์ ํ (foreign key ์ฌ์ฉํ ์ด์ ๊ณ์ฐ๊ณผ ๋์ผ)
- Projection
- ฮ Aโ(r)์ ์ถ์ ํฌ๊ธฐ = V(A,ย r)
- Set operations:
- ๋์ผ relation์ ๋ํ selection์ union/intersection: ์ฌ์์ฑ ํ selection ํฌ๊ธฐ ์ถ์ ์ฌ์ฉ (์: ฯฮธ1โโ(r)โชฯฮธ2โโ(r)โฯฮธ1โโจฮธ2โโ(r))
- ๋ค๋ฅธ relation์ ๋ํ ์ฐ์ฐ:
- rโชs ์ถ์ ํฌ๊ธฐ = nrโ+nsโ
- rโฉs ์ถ์ ํฌ๊ธฐ = min(nrโ,ย nsโ)
- rโs ์ถ์ ํฌ๊ธฐ = nrโ
- (์ธ ์ถ์ ์น ๋ชจ๋ ๋ถ์ ํํ ์ ์์ผ๋ upper bound ์ ๊ณต)
- ๊ฐ ์ฐ์ฐ ๊ฒฐ๊ณผ์ attribute A์ ๋ํ distinct ๊ฐ์ ์ V(A,โฆ) ์ถ์ ํ์
- Selections: ฯฮธโ(r)
- ฮธ๊ฐ A๋ฅผ ํน์ ๊ฐ(์: A=3)์ผ๋ก ๊ฐ์
- V(A,ย ฯฮธโ(r))=1
- ฮธ๊ฐ A๋ฅผ ํน์ ๊ฐ ์งํฉ ์ค ํ๋(์: A=1โจA=3โจA=4)๋ก ๊ฐ์
- V(A,ย ฯฮธโ(r))= (๋ช
์๋ ๊ฐ์ ์)
- ฮธ๊ฐ Aย (op)ย v ํํ
- V(A,ย ฯฮธโ(r))โV(A,ย r)โ
s (s๋ selection์ selectivity)
- ๊ทธ ์ธ
- min(V(A,ย r),ย nฯฮธโ(r)โ) (upper bound)
- Joins: rโs
- A๊ฐ r์ attribute์ธ ๊ฒฝ์ฐ
- V(A,ย rโs)โmin(V(A,ย r),ย nrโsโ)
- Projections: ฮ Aโ(r)
- V(A,ย ฮ Aโ(r))=V(A,ย r)
- Cost-based optimizer: ์ฃผ์ด์ง query์ ๋๋ฑํ ๋ชจ๋ query-evaluation plan ํ์, ์ต์ ์ถ์ ๋น์ฉ plan ์ ํ
- Plan ์ ํ ์ evaluation technique ๊ฐ ์ํธ์์ฉ ๊ณ ๋ ค ํ์
- ๊ฐ ์ฐ์ฐ์ ๋ํด ๋
๋ฆฝ์ ์ผ๋ก ๊ฐ์ฅ ์ ๋ ดํ algorithm ์ ํ์ด ์ต์ ์ ์ ์ฒด algorithm์ ๋ณด์ฅํ์ง ์์
- ์: Merge-join์ด hash-join๋ณด๋ค ๋น์ธ์ง๋ง, ์ ๋ ฌ๋ output ์ ๊ณตํ์ฌ ์ธ๋ถ ์ง๊ณ(aggregation) ๋น์ฉ ์ค์ผ ์ ์์
- (Block) nested-loop join์ pipelining ๊ธฐํ ์ ๊ณต ๊ฐ๋ฅ
- ์ค์ query optimizer๋ ๋ค์ ๋ ์ ๊ทผ ๋ฐฉ์ ์์ ํตํฉ
- ๋ชจ๋ plan ํ์ ํ cost-based ๋ฐฉ์์ผ๋ก ์ต์ plan ์ ํ
- Heuristics๋ฅผ ์ฌ์ฉํ์ฌ plan ์ ํ
- r1โโr2โโโฏโrnโ์ ๋ํ ์ต์ join-order ์ฐพ๊ธฐ
- (2(nโ1))!/(nโ1)! ๊ฐ์ ๋ค๋ฅธ join order ์กด์ฌ
- n=3์ผ ๋ 12๊ฐ
r1โโ(r2โโr3โ)r2โโ(r1โโr3โ)r3โโ(r1โโr2โ)โr1โโ(r3โโr2โ)r2โโ(r3โโr1โ)r3โโ(r2โโr1โ)โ(r2โโr3โ)โr1โ(r1โโr3โ)โr2โ(r1โโr2โ)โr3โโ(r3โโr2โ)โr1โ(r3โโr1โ)โr2โ(r2โโr1โ)โr3โโ
- n=7์ผ ๋ 665,280๊ฐ, n=10์ผ ๋ 1760์ต ๊ฐ ์ด์
- ๋ชจ๋ join order ์์ฑ ๋ถํ์
- Dynamic programming ์ฌ์ฉ
- {r1โ,ย r2โ,ย โฆ,ย rnโ}์ ๋ชจ๋ ๋ถ๋ถ์งํฉ(subset)์ ๋ํ ์ต์ ๋น์ฉ join order๋ฅผ ํ ๋ฒ๋ง ๊ณ์ฐํ๊ณ ํฅํ ์ฌ์ฉ ์ํด ์ ์ฅ
- ์: (r1โโr2โโr3โ)โr4โโr5โ
- {r1โ,ย r2โ,ย r3โ}์ ๋ํ ์ต์ join order ์ฐพ์ผ๋ฉด, r4โ,r5โ์์ ์ถ๊ฐ join์ ํด๋น order ์ฌ์ฉ
- Left-deep join tree์์ ๊ฐ join์ ์ค๋ฅธ์ชฝ ์
๋ ฅ(right-hand-side input)์ (์ค๊ฐ join ๊ฒฐ๊ณผ๊ฐ ์๋) relation
- Pipelined evaluation์ ํนํ ํธ๋ฆฌ (์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์๊ฐ ์ ์ฅ๋ relation์ด๋ฏ๋ก ๊ฐ join์ ์
๋ ฅ ์ค ํ๋๋ง pipelined)
- System R optimizer๋ left-deep join order๋ง ๊ณ ๋ ค
- ์ด n! ๊ฐ์ join order ( (2(nโ1))!/(nโ1)! ๋ณด๋ค ํจ์ฌ ์ ์)

- Cost-based optimization์ dynamic programming ์ฌ์ฉํด๋ ๋น์ฉ ๋์
- System์ cost-based ๋ฐฉ์์ผ๋ก ์ ํํด์ผ ํ๋ ๋์ ์๋ฅผ ์ค์ด๊ธฐ ์ํด heuristics ์ฌ์ฉ ๊ฐ๋ฅ
- Heuristic optimization: ์คํ ์ฑ๋ฅ์ (ํญ์์ ์๋์ง๋ง) ์ผ๋ฐ์ ์ผ๋ก ํฅ์์ํค๋ ๊ท์น ์งํฉ์ ์ฌ์ฉํ์ฌ query-tree ๋ณํ
- Selection ์กฐ๊ธฐ ์ํ (tuple ์ ๊ฐ์)
- Projection ์กฐ๊ธฐ ์ํ (attribute ์ ๊ฐ์)
- ๋ค๋ฅธ ์ ์ฌ ์ฐ์ฐ๋ณด๋ค ๊ฐ์ฅ ์ ํ์ ์ธ(๊ฐ์ฅ ์์ ๊ฒฐ๊ณผ ํฌ๊ธฐ) selection ๋ฐ join ์ฐ์ฐ ๋จผ์ ์ํ
- ์ผ๋ถ system์ heuristics๋ง ์ฌ์ฉ, ๋ค๋ฅธ system์ heuristics์ ๋ถ๋ถ์ cost-based optimization ๊ฒฐํฉ