Vincent
November 26, 2021, 2:12am
1
์์ํ ํ์ผ ์ ์๋๋ฐ ๋ชจ๋ฅด๋ ๋ถ์ ์ ์ฒ๋ผ ๋ชจ๋ฅด์
จ์ ๊ฒ ๊ฐ์ ๊ณต์ ํฉ๋๋ค.
์ด๋ฒ ์ฃผ 1100๋ง ๊ฑด ์ ๋ ๋ค์ด ์๋ Table์ Column 3๊ฐ๋ฅผ ์ถ๊ฐํ๋ ์ญ์ ๊ทํ ์์
์ ์งํํ์์ต๋๋ค.
DB์ ๋ํ ์ดํด๊ฐ ์์๊ธฐ ๋๋ฌธ์ ์์ฐ์ค๋ฝ๊ฒ
์ฝ์์ฑ์ ๋ง๋ค๊ณ
์ฝ์์ฑ์์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๊ฐ์ ธ์จ ๋ค
์ฝ์์ฑ์์ ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค์ด์
์ญ์ ๊ทํ ํ
์ด๋ธ๋ก ๋ฐ๋ณต๋ฌธ์ ํตํด update
์ด๋ ๊ฒ ํ์๋๋ฐ์. ์์๋ ๋ถ๋ค์ ์์๊ฒ ์ง๋ง ์ ํ๋ก์ธ์ค๋ ์์ฒญ๋๊ฒ ์ค๋๊ฑธ๋ฆฝ๋๋ค. ๊ด๋ จํด์ ์์นญ์ ํด๋ณด๋, UPDATE or MERGE of very big tables in SQL Server - Stack Overflow ์ด๋ฐ ๋งํฌ๋ฅผ ์ฐพ์์ต๋๋ค. ์ด ํฌ์คํธ๋ฅผ ๋ณด๋, 3์ต ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ์๋ ํ
์ด๋ธ์ 40๋ถ์ ๋๋ฉด ์
๋ฐ์ดํธ ํ๋ค๊ณ ํ๋๋ฐ ์ด๊ฒ๋ณด๋ค ๋ ๋น ๋ฅธ ์ํ์๋๋ฅผ ์ํ๋ ๊ธ ์
๋๋ค. ์๋ ์ด๋ฐ์ ๋ฐ ์ค๋ช
์ด ๋ฌ๋ ค์์ง๋ง ์ง๋ฌธ์๊ฐ MERGE ๋ฌธ์ ํตํด ๋๊ท๋ชจ ์
๋ฐ์ดํธ๋ฅผ ์ํํ๋ค๋ ์ฌ์ค์ ํ์
ํ ์ ์์์ต๋๋ค. ๋ค๋ฅธ ์ปค๋ฎค๋ํฐ ์ง์ธ๋ค๋ MERGE JOIN, Update JOIN์ ์์๋ณด๋ผ๊ณ ์ถ์ฒํด์ฃผ์
จ์์ต๋๋ค.
์ ๊ธ ๋๋ถ์ MERGE ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๊ณ , 1100๋ง ๊ฑด์ ๋ฐ์ดํฐ์ ๋ํด update๋ฅผ 4๋ถ 30์ด๋ง์ ์ํ ํ์ต๋๋ค. ์ ํ๊ฒฝ์ ์๋์ ๊ฐ์ต๋๋ค.
varchar(15)
nvarchar(50)
varchar(30)
nvarchar(50)
int
decimal(7,2)
nvarchar(100)
nvarchar(500)
int
decimal(15, 3)
tinyint
char(2)
datetime2
nvarchar(10)
ํ
์ด๋ธ์ ๋ํด
4 Core, 3.40 GHz, 16GB RAM, SQL Server 2016 ์ ์คํ์ผ๋ก ์งํํ์ต๋๋ค.
๋๊ท๋ชจ ์
๋ฐ์ดํธ์ ๋ํด์ ๋
ธํ์ฐ๊ฐ ์ ํ ์์ผ์ ๋ถ๋ค๊ป ์ถ์ฒ๋๋ฆฝ๋๋ค.
5 Likes
suwoo
November 26, 2021, 6:04am
2
merge ์ฟผ๋ฆฌ๋ฅผ ํ์ฉํด ๋ฐ์ดํฐ๋ฅผ UPDATE ํ์
จ๋ค๋ ๋ง์์ด์ ๊ฑฐ์ฃ ?
key๊ฐ +@ ์ ์กฐ๊ฑด์ ํตํด switch๋ฌธ์ฒ๋ผ ํ์ฉํ๋ ๋ฐฉ๋ฒ๋ ์์๋ ๊ฑธ๋ก ๊ธฐ์ต์ด ๋๋ค์.
์๋๋ฉด, merge๋ฌธ์ join๊ตฌ๋ฌธ์ ์์๋ค๋ ๋ง์์ด์ค๊น์?
์ ๊ฐ ๋งฅ๋ฝ์ ์ ์ดํด ํ์ง ๋ชปํ ๋ฏ ํฉ๋๋ค @_ @
2 Likes
Vincent
November 26, 2021, 6:22am
3
์ ๊ฐ ๊ธฐ์กด์ Merge ๋ฌธ์ ์ ๋ชจ๋ฅผ ๋๋ 1๊ฑด์ ๋ํด์๋ง ์ฒ๋ฆฌํ์์ต๋๋ค. ์๋์ ๊ฐ์ ์์
๋๋ค.
MERGE table1 AS A
USING
(
SELECT @์์ ๋ฐ์ดํฐ1 AS ์์ ๋ฐ์ดํฐ
) AS B
ON
(
A.์์ ๋ฐ์ดํฐ = B.์์ ๋ฐ์ดํฐ
)
WHEN MATCHED THEN
UPDATE SET
์์ ๋ฐ์ดํฐ = B.์์ ๋ฐ์ดํฐ;
์๋ฐ ์์ด์๋ค๋ฉด,
MERGE table1 AS A
USING
(
SELECT *
FROM table2
) AS B
ON
(
A.์์ ๋ฐ์ดํฐ = B.์์ ๋ฐ์ดํฐ
)
WHEN MATCHED THEN
UPDATE SET
์์ ๋ฐ์ดํฐ = B.์์ ๋ฐ์ดํฐ;
์ด๋ ๊ฒ Source๊ฐ ๋๋ ๋ถ๋ถ์ ํ
์ด๋ธ๋ก ๋ฐ๊ฟจ๋ค๋ ๋ป์
๋๋ค.
์ฟผ๋ฆฌ๋ฅผ ์ ๋ชฐ๋ผ์ ์๊ธฐ๋ ๋ฌธ์ ์์ต๋๋ค.
2 Likes
suwoo
November 26, 2021, 6:28am
4
์ํโฆ
์ฌ๋ฌ ํ์ผ๋ก ์ธ ์ ์๋ ๊ธฐ๋ฅ์ด๋ผ
์ต์ํด์ง๋ฉด ์์ฒญ ํธํ ๊ธฐ๋ฅ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค
์ด ๋ถ๋ถ ๋๋ฌธ์ ํท๊ฐ๋ ท๋ ๊ฒ ๊ฐ๋ค์ ^^;
2 Likes
Vincent
November 26, 2021, 6:29am
5
MERGE ๋ฐฉ์์ผ๋ก ์ด๋ฏธ ๋์ด๋ฒ๋ ค์ ๋ ์ด์ ์ฐพ์ง๋ ์์์ง๋ง Update Join์ ์๋ง ์๋์ ๊ธ์ ๋งํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
DB๋ฐ์ดํฐ๋ฅผ UPDATE์ ๋ค๋ฅธํ
์ด๋ธ๊ณผ JOINํ์ฌ ์
๋ฐ์ดํธ๋ฅผ ํ ๋ ์ฌ์ฉํ๋์ฟผ๋ฆฌ์ด๋ค. UPDATE [๋ณ๊ฒฝ๋ ํ
์ด๋ธ] SET [์ปฌ๋ผ1] = A2.[์ปฌ๋ผ1] , [์ปฌ๋ผ2] = A2.[์ปฌ๋ผ2] FROM [์กฐ์ธํ
์ด๋ธ] A2 WHERE [๋ณ๊ฒฝ๋ ํ
์ด๋ธ].[์กฐ๊ฑด์ปฌ๋ผ] = A2.[์กฐ๊ฑด์ปฌ๋ผ] UPDATE MEMBER SET REG_USER_ID = ID , REG_DATE = A2.REG_DATE FROM MEMBER_WALLET A2 WHERE...
merge join์ source ๋ถ๋ถ์ join ์ฟผ๋ฆฌ๋ฅผ ๋ฃ์ source๋ผ๋ ๋ง์ธ ๊ฒ ๊ฐ์ต๋๋คโฆใ
ใ
2 Likes