์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- ์ฐ์ฐ์
- ์ค๋ฒ๋ผ์ด๋ฉ
- ์์
- ์ค๋ฒ๋ก๋ฉ
- StringBuffer
- ์คํ๋ง์ํ๋ฆฌํฐ ๋ก๊ทธ์์
- ๋ ผ๋ฆฌ ์ฐ์ฐ์
- ํจ์
- SQL ํ๋
- ๋ฐ๋ณต๋ฌธ
- @PreAuthorize("isAuthenticated()")
- java
- ์ฐ์ ์ฐ์ฐ์
- spring ๊ฒ์ํ ์ญ์
- ๊ฐ์ฒด์งํฅ
- SQLํ๋
- join
- SpringSecurity ๋ก๊ทธ์์
- ์ธํ ๋ฆฌ์ ์ด Web ์ ํ๋ฆฌ์ผ์ด์
- ์๋ณ์
- ์์ฝ์ด
- SQL
- ์ดํด๋ฆฝ์ค ์ค์น
- ๋น๊ต ์ฐ์ฐ์
- SpringSecurity ๋ก๊ทธ์ธ
- ์น์ ํ SQL
- ์น์ ํ SQL ํ๋
- ๊ฐ์ฒด
- ๋ฐฐ์ด
- ์๋ฐ์์ ์
- Today
- Total
gi_dor
๐ SQL ํ๋ - CH 4. ์กฐ์ธ ํ๋ - ํด์ ์กฐ์ธ ๋ณธ๋ฌธ
๐ต HASH JOIN
NL์กฐ์ธ์ ์ธ๋ฑ์ค๋ฅผ ์ด์ฉํ ์กฐ์ธ ๋ฐฉ์์ด๋ค , ์ธ๋ฑ์ค ๊ตฌ์ฑ์ ๋ฐ๋ผ ์ฑ๋ฅ ์ฐจ์ด๊ฐ ์ฌํ๋ค
๋ฐ๋ฉด ์ํธ๋จธ์ง ์กฐ์ธ๊ณผ ํด์์กฐ์ธ์ , ์กฐ์ธ ๊ณผ์ ์์ ์ธ๋ฑ์ค๋ฅผ ์ด์ฉํ์ง ์๊ธฐ ๋๋ฌธ์
' ๋๋ ๋ฐ์ดํฐ ์กฐ์ธํ ๋ NL ์กฐ์ธ๋ณด๋ค ํจ์ฌ ๋น ๋ฅด๊ณ , ์ผ์ ํ ์ฑ๋ฅ์ ๋ณด์ธ๋ค'
์ํธ๋จธ์ง ์กฐ์ธ์ ํญ์ ์์ชฝ ํ
์ด๋ธ์ ์ ๋ ฌ ํ๋ ๋ถ๋ด์ด ์๋ค
ํด์ ์กฐ์ธ์ ๊ทธ๋ฐ ๋ถ๋ด์ด ์๋ค
๊ทธ๋ ๋ค๊ณ ๋ชจ๋ ์กฐ์ธ์ ํด์์กฐ์ธ์ผ๋ก ์ฒ๋ฆฌํ ์๋ ์๋ค
1 - 1 ๊ธฐ๋ณธ ๋ฉ์ปค๋์ฆ
ํด์์กฐ์ธ์ ์ํธ๋จธ์ง ์กฐ์ธ์ฒ๋ผ 2๋จ๊ณ๋ก ์งํ๋๋ค
- Build ๋จ๊ณ : ์์ ์ชฝ ํ ์ด๋ธ์ ์ฝ์ด ํด์ ํ ์ด๋ธ(ํด์ ๋งต)์ ์์ฑ
- Probe ๋จ๊ณ : ํฐ ์ชฝ ํ ์ด๋ธ์ ์ฝ์ด ํด์ ํ ์ด๋ธ์ ํ์ํ๋ฉด์ ์กฐ์ธํ๋ค
ํด์ ์กฐ์ธ์ use_hagh ํํธ๋ก ์ ๋ํ๋๋ฐ
์ฌ์ ํ
์ด๋ธ ๊ธฐ์ค ์ผ๋ก ๊ณ ๊ฐ ํ
์ด๋ธ๊ณผ ์กฐ์ธ ํ ๋ ํด์ ์กฐ์ธ ๋ฐฉ์์ ์ฌ์ฉํ๋ผ๊ณ ์ง์ํ๋ค.
select /*+ ordered use_hash(c) */
e.์ฌ์๋ฒํธ, e.์ฌ์๋ช
, e.์
์ฌ์ผ์
,c.๊ณ ๊ฐ๋ฒํธ, C.๊ณ ๊ฐ๋ช
, c.์ ํ๋ฒํธ, c.์ต์ข
์ฃผ๋ฌธ๊ธ์ก
from ์ฌ์ e, ๊ณ ๊ฐ c
where c.๊ด๋ฆฌ์ฌ์๋ฒํธ = e.์ฌ์๋ฒํธ
and e.์
์ฌ์ผ์ >= '19960101'
and e.๋ถ์์ฝ๋ = 'Z123'
and c.์ต์ข
์ฃผ๋ฌธ๊ธ์ก >= 20000
;
1 ) Build ๋จ๊ณ
- ์กฐ๊ฑด์ ํด๋นํ๋ ์ฌ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ ํด์ ํ ์ด๋ธ ์์ฑ
- ์กฐ์ธ ์ปฌ๋ผ์ธ ์ฌ์๋ฒํธ๋ฅผ ํด์ ํ
์ด๋ธ key ๊ฐ์ผ๋ก ์ฌ์ฉ , ์ฆ ์ฌ์๋ฒํธ๋ฅผ ํด์ ํจ์์ ์
๋ ฅ ํด์ ๋ฐํ๋ ๊ฐ์ผ๋ก
ํด์ ์ฒด์ธ์ ์ฐพ์ ์ฒด์ธ์ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ฒฐ
ํด์ ํ ์ด๋ธ์ด ์ปค์ PGA์ ๋ด์์ ์์ผ๋ฉด Temp ํ ์ด๋ธ ์คํ์ด์ค์ ์ ์ฅ๋๋ค.
2 ) Probe ๋จ๊ณ
- ์กฐ๊ฑด์ ํด๋นํ๋ ๊ณ ๊ฐ ๋ฐ์ดํฐ๋ฅผ ํ๋์ฉ ์ฝ์ด ์์ ์์ฑํ ํด์ํ ์ด๋ธ์ ํ์ํ๋ค
- ๊ด๋ฆฌ์ฌ๋ฒ์ผ๋ก ํด์ํจ์๋ฅผ ์ ๋ ฅํด ๋ฐํ๋ ๊ฐ์ผ๋ก ํด์ ์ฒด์ธ์ ์ฐพ์ ์ค์บํด์ ๊ฐ์ด ๊ฐ์ ์ฌ๋ฒ์ ์ฐพ๋๋ค
1 - 2 ํด์ ์กฐ์ธ์ด ๋น ๋ฅธ ์ด์
Hash Area์ ์์ฑํ ํด์ํ
์ด๋ธ (-=ํด์ ๋งต)์ ์ด์ฉ ํ๋ค๋ ๊ฒ๋ง ๋ค๋ฅผ ๋ฟ ํด์ ์กฐ์ธ๋ NL ์กฐ์ธ๊ณผ ๊ฐ๋ค
๊ทธ๋ฐ๋ฐ๋ ํด์ ์กฐ์ธ์ด NL ์กฐ์ธ๋ณด๋ค ๋น ๋ฅธ ์ด์ ๋ ํด์ ํ
์ด๋ธ์ PGA (private) ์์ญ์ ํ ๋น ํ๊ธฐ ๋๋ฌธ.
๐ ํด์ ํ ์ด๋ธ์๋ JOIN ํค ๊ฐ๋ฟ๋ง ์๋๋ผ SQL์ ์ฌ์ฉํ ์ปฌ๋ผ์ ๋ชจ๋ ์ ์ฅํ๋ค.
1 - 3 ํด์์กฐ์ธ ์คํ๊ณํ ์ ์ด
์ธ๊ฐ ์ด์์ ํ ์ด๋ธ ํด์ ์กฐ์ธํ๊ธฐ
A B C ์ธ๊ฐ์ ํ ์ด๋ธ์ ์กฐ์ธํ๋ ๊ฒฝ๋ก๋ ์ด 2๊ฐ์ง๋ค
๊ฒฝ๋ก1
select *
from A, B , C
where A.key = B.key
and B.key = C.key
๊ฒฝ๋ก2
select *
from A, B,C
where A.key= B.key
and A.key = C.key
๊ฒฝ๋ก2 ๋ฅผ ๊ทธ๋ฆผ ์ฒ๋ผ ๋ฐ๊ฟ์ ํํํ๋ค
๊ฒฐ๊ตญ ์ธ๊ฐ์ ํ ์ด๋ธ์ ์กฐ์ธ ํ๋ ๊ฒฝ๋ก๋
๊ฒฝ๋ก 1์์ A ,B ,C ๋ฅผ ๊ฐ๊ฐ T1 , T2 , T3์ ๋์
ํ๊ณ
๊ฒฝ๋ก 2 ์์ B , A ,C ๋ฅผ ๊ฐ๊ฐ T1 , T2 , T3์ ๋์
ํ๋ค.
๊ทธ๋ ๋ค๋ฉด ์ธ๊ฐ์ ํ ์ด๋ธ์ ๋ํด ํด์์กฐ์ธ์ ์ ์ดํ ๋ leading ํํธ๋ฅผ ์ง์ ํ์
selec /*+ leading(T1,T2,T3) use_hash(T2) use_hash(T3) */ *
from T1, T2, T3
where T1.key = T2.key
and T2.key = T3.key
ํด์์กฐ์ธ์์ leading ํํธ์ ์ฒซ๋ฒ์งธ ํ๋ผ๋ฏธํฐ๋ก ์ง์ ๋ ํ
์ด๋ธ์ ๋ฌด์กฐ๊ฑด Build Input์ผ๋ก ์ ํ๋๋ค
T1 ํ
์ด๋ธ์ ์ฒซ๋ฒ์งธ ํ๋ผ๋ฏธํฐ๋ก ์ง์ ํ์ผ๋ฏ๋ก T2 ํ
์ด๋ธ๊ณผ ์กฐ์ธํ ๋๋ T1์ด Build Input ์ด๋ค
1 - 4 ์กฐ์ธ ๋ฉ์๋ ์ ํ ๊ธฐ์ค
โ ์๋ ๋ฐ์ดํฐ ์กฐ์ธ โท NL ์กฐ์ธ
โก ๋๋ ๋ฐ์ดํฐ์ ์กฐ์ธ โท ํด์ ์กฐ์ธ
โข ๋๋์ ๋ฐ์ดํฐ ์กฐ์ธ์ธ๋ฐ ์กฐ๊ฑด์์ ๋ฑ์น (=)๊ฐ ์๋๋ค โท ์ํธ ๋จธ์ง ์กฐ์ธ
๐ ์๋๊ณผ ๋๋์ ๊ธฐ์ค ?
๋ฐ์ดํฐ๋์ ๋ง๊ณ ์ ์์ ๋ฌธ์ ๊ฐ ์๋๋ผ
NL์กฐ์ธ ๊ธฐ์ค์ผ๋ก '์ต์ ํ ํ์์๋' ๋๋ค ์ก์ธ์ค๊ฐ ๋ง์กธํ ๋งํ ์ฑ๋์ ๋ผ์ ์๋ค๋ฉด ๋๋ ๋ฐ์ดํฐ ์กฐ์ธ
์ํ ๋น๋๊ฐ ๋์ ์ฟผ๋ฆฌ์ ๋ํ ๊ธฐ์ค
โ (์ต์ ํ๋) NL ์กฐ์ธ๊ณผ ํด์ ์กฐ์ธ ์ฑ๋ฅ์ด ๊ฐ์ผ๋ฉด NL์กฐ์ธ
โก ํด์ ์กฐ์ธ์ด ์ฝ๊ฐ ๋ ๋นจ๋ผ๋ NL ์กฐ์ธ
โข NL ์กฐ์ธ๋ณด๋ค ํด์ ์กฐ์ธ์ด ๋น ๋ฅธ ๊ฒฝ์ฐ , ํด์ ์กฐ์ธ
โข์ ์๋ง ๋๋ ๋ฐ์ดํฐ ์กฐ์ธ์ผ ๊ฒ์ด๋ค , ๋๋ ๋ฐ์ดํฐ ์กฐ์ธํ ๋ ํด์ ์กฐ์ธํ๋ผ์ ๊ฐ์ ์๋ฏธ
'First > SQL ํ๋' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ SQL ํ๋ - CH 5. ์ํธ ํ๋ (0) | 2023.08.21 |
---|---|
๐ SQL ํ๋ - CH 4. ์กฐ์ธ ํ๋ - ์๋ธ์ฟผ๋ฆฌ ์กฐ์ธ (0) | 2023.08.21 |
๐ SQL ํ๋ - CH 4. ์กฐ์ธ ํ๋ - ์ํธ ๋จธ์ง ์กฐ์ธ (0) | 2023.08.18 |
๐ SQL ํ๋ - CH 4. ์กฐ์ธ ํ๋ - NL ์กฐ์ธ (0) | 2023.08.18 |
๐ SQL ํ๋ - CH 3. ์ธ๋ฑ์ค ํ๋ (0) | 2023.08.18 |