๋ชจ๋“  ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์‹œ์ž‘๋˜์—ˆ๋Š”์ง€ ๊ธฐ์–ตํ•˜์‹ญ๋‹ˆ๊นŒ? ๋ชจ๋“  ๊ฒŒ ์ฒ˜์Œ์ด์—ˆ๊ณ  ๋˜ ๋‹ค์‹œ ๊ทธ๋žฌ์–ด

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

๋ชจ๋“  ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์‹œ์ž‘๋˜์—ˆ๋Š”์ง€ ๊ธฐ์–ตํ•˜์‹ญ๋‹ˆ๊นŒ? ๋ชจ๋“  ๊ฒŒ ์ฒ˜์Œ์ด์—ˆ๊ณ  ๋˜ ๋‹ค์‹œ ๊ทธ๋žฌ์–ด

์‹ค์ œ ์‚ฌ๊ฑด์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.
์ด๋ฆ„์€ ๋ชจ๋‘ ๋ณ€๊ฒฝ๋˜์—ˆ์œผ๋ฉฐ ์šฐ์—ฐ์˜ ์ผ์น˜๋Š” ๋ฌด์ž‘์œ„์ž…๋‹ˆ๋‹ค.

ํŠน์ • ๊ฒฐ๊ณผ๋ฅผ ์–ป์—ˆ์„ ๋•Œ ๋ชจ๋“  ๊ฒƒ์ด ์‹œ์ž‘๋œ ์‹œ์ž‘์˜ ์›๋™๋ ฅ์ด ๋ฌด์—‡์ธ์ง€ ๊ธฐ์–ตํ•˜๋Š” ๊ฒƒ์€ ํ•ญ์ƒ ํฅ๋ฏธ ๋กญ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๊ทธ ๊ฒฐ๊ณผ ์ผ์–ด๋‚œ ์ผ์€ ๊ธฐ์‚ฌ์— ๊ฐ„๋žตํ•˜๊ฒŒ ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.PostgreSQL ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋กœ ํ•ฉ์„ฑ".

์ด์ „ ์ด๋ฒคํŠธ ์ฒด์ธ์„ ์žฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ์•„๋งˆ๋„ ํฅ๋ฏธ๋กœ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๊ธฐ๋ก์—๋Š” ์ •ํ™•ํ•œ ์‹œ์ž‘ ๋‚ ์งœ์ธ 2018-09-10 18:02:48์ด ์ €์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ ์ด์•ผ๊ธฐ์—๋Š” ๋ชจ๋“  ๊ฒƒ์ด ์‹œ์ž‘๋œ ์š”์ฒญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฌธ์ œ์š”์ฒญSELECT
p.parameter_id๋กœ "PARAMETER_ID",
pd."PD_NAME" AS pd_name,
pd."CUSTOMER_PARTNUMBER" AS ๊ณ ๊ฐ_๋ถ€ํ’ˆ๋ฒˆํ˜ธ,
w. "LRM"์€ LRM์œผ๋กœ,
w. "LOTID"๋Š” ๋กœํ‹ฐ๋“œ๋กœ์„œ,
w.RTD_๊ฐ’์œผ๋กœ์„œ "RTD_VALUE",
w.โ€œLOWER_SPEC_LIMITโ€ AS lower_spec_limit,
w.โ€œUPPER_SPEC_LIMITโ€ AS upper_spec_limit,
p."TYPE_CALCUL" AS type_calcul,
s."SPENT_NAME" AS ์‚ฌ์šฉ_์ด๋ฆ„,
s.โ€œSPENT_DATEโ€ AS ์‚ฌ์šฉ_๋‚ ์งœ,
extract("SPENT_DATE"์˜ ์—ฐ๋„) AS ์—ฐ๋„,
("SPENT_DATE"์˜ ์›”)์„ ์›”๋กœ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.
s."REPORT_NAME" AS ๋ณด๊ณ ์„œ_์ด๋ฆ„,
p."STPM_NAME" AS stpm_name,
p.โ€œCUSTOMERPARAM_NAMEโ€ AS customerparam_name
wdata w์—์„œ,
s๋ฅผ ๋ณด๋ƒˆ๋‹ค,
์˜คํ›„ํ‹ฐ๋ฅดํ”ผ,
์ง€์ถœ_pd sp,
PD PD
WHERE s.โ€œSPENT_IDโ€ = w.โ€œSPENT_IDโ€
AND p."PARAMETER_ID" = w."PARAMETER_ID"
AND s.โ€œSPENT_IDโ€ = sp.โ€œSPENT_IDโ€
AND pd."PD_ID" = sp."PD_ID"
AND s.โ€œSPENT_DATEโ€ >= '2018-07-01' AND s.โ€œSPENT_DATEโ€ <= '2018-09-30'
๋ฐ s.โ€œSPENT_DATEโ€ = (SELECT MAX(s2.โ€œSPENT_DATEโ€)
์‚ฌ์šฉํ•œ s2์—์„œ,
w๋ฐ์ดํ„ฐ w2
WHERE s2.โ€œSPENT_IDโ€ = w2.โ€œSPENT_IDโ€
AND w2.โ€œLRMโ€ = w.โ€œLRMโ€);


๋ฌธ์ œ์— ๋Œ€ํ•œ ์„ค๋ช…์€ ์˜ˆ์ƒ๋Œ€๋กœ ํ‘œ์ค€์ž…๋‹ˆ๋‹ค. โ€œ๋ชจ๋“  ๊ฒƒ์ด ๋‚˜์ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๋งํ•ด ๋ณด์„ธ์š”.โ€
๋‚˜๋Š” ์ฆ‰์‹œ 3์ธ์น˜ ๋“œ๋ผ์ด๋ธŒ ์‹œ์ ˆ์˜ ์ผํ™”๋ฅผ ๋– ์˜ฌ๋ ธ์Šต๋‹ˆ๋‹ค.

๋ผ๋จธ๊ฐ€ ํ•ด์ปค์—๊ฒŒ ๋‹ค๊ฐ€์˜ต๋‹ˆ๋‹ค.
- ์•„๋ฌด๊ฒƒ๋„ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ณณ์„ ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค.
- DNA์—...

ํ•˜์ง€๋งŒ ๋ฌผ๋ก  ์ด๊ฒƒ์ด ์„ฑ๋Šฅ์‚ฌ๊ณ ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์•„๋‹™๋‹ˆ๋‹ค. โ€œ๊ทธ๋“ค์€ ์šฐ๋ฆฌ๋ฅผ ์ดํ•ดํ•˜์ง€ ๋ชปํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค" (์™€ ํ•จ๊ป˜). ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ์•Œ์•„๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๊ธ€์Ž„, ํŒŒํ—ค์ณ ๋ณด์ž. ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋ญ”๊ฐ€๊ฐ€ ์Œ“์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์‹œ์ž‘๋˜์—ˆ๋Š”์ง€ ๊ธฐ์–ตํ•˜์‹ญ๋‹ˆ๊นŒ? ๋ชจ๋“  ๊ฒŒ ์ฒ˜์Œ์ด์—ˆ๊ณ  ๋˜ ๋‹ค์‹œ ๊ทธ๋žฌ์–ด

์กฐ์‚ฌ๊ฐ€ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค

๋”ฐ๋ผ์„œ EXPLAIN์— ์˜์ง€ํ•˜์ง€ ์•Š๊ณ ๋„ ์œก์•ˆ์œผ๋กœ ์ฆ‰์‹œ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
1) JOIN์€ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์—ฐ๊ฒฐ ์ˆ˜๊ฐ€ ๋‘˜ ์ด์ƒ์ธ ๊ฒฝ์šฐ ์ด๋Š” ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
2) ๊ทธ๋Ÿฌ๋‚˜ ๋”์šฑ ๋‚˜์œ ๊ฒƒ์€ ์ง‘๊ณ„์™€ ๊ด€๋ จ๋œ ํ•˜์œ„ ์ฟผ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์ด๊ฑด ์ •๋ง ๋‚˜๋น .
๋ฌผ๋ก  ์ด๊ฒƒ์€ ๋‚˜์˜๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ํ•œํŽธ์—๋งŒ ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์—, ๋ฌธ์ œ์—๋Š” ๋ถ„๋ช…ํžˆ ํ•ด๊ฒฐ๋ฐฉ์•ˆ๊ณผ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์š”๊ตฌ์‚ฌํ•ญ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋งค์šฐ ์ข‹์Šต๋‹ˆ๋‹ค.
์ ์Ÿ์ด์—๊ฒŒ ๊ฐ€์ง€ ๋งˆ์„ธ์š” (C).
์ฟผ๋ฆฌ ๊ณ„ํš์€ ๊ทธ๋‹ค์ง€ ๋ณต์žกํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ๋งค์šฐ ์‹œ์‚ฌ์ ์ž…๋‹ˆ๋‹ค.
์‹คํ–‰ ๊ณ„ํš๋ชจ๋“  ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์‹œ์ž‘๋˜์—ˆ๋Š”์ง€ ๊ธฐ์–ตํ•˜์‹ญ๋‹ˆ๊นŒ? ๋ชจ๋“  ๊ฒŒ ์ฒ˜์Œ์ด์—ˆ๊ณ  ๋˜ ๋‹ค์‹œ ๊ทธ๋žฌ์–ด

ํ‰์†Œ์™€ ๊ฐ™์ด ๊ฐ€์žฅ ํฅ๋ฏธ๋กญ๊ณ  ์œ ์šฉํ•œ ๊ฒƒ์€ ์‹œ์ž‘๊ณผ ๋์ž…๋‹ˆ๋‹ค.
์ค‘์ฒฉ ๋ฃจํ”„(๋น„์šฉ=935.84..479763226.18ํ–‰=3322๋„ˆ๋น„=135)(์‹ค์ œ ์‹œ๊ฐ„=31.536..8220420.295ํ–‰=8111656๋ฃจํ”„=1)
๊ณ„ํš ์‹œ๊ฐ„: 3.807ms
์‹คํ–‰ ์‹œ๊ฐ„: 8222351.640ms
์™„๋ฃŒ ์‹œ๊ฐ„์€ 2์‹œ๊ฐ„ ์ด์ƒ์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์‹œ์ž‘๋˜์—ˆ๋Š”์ง€ ๊ธฐ์–ตํ•˜์‹ญ๋‹ˆ๊นŒ? ๋ชจ๋“  ๊ฒŒ ์ฒ˜์Œ์ด์—ˆ๊ณ  ๋˜ ๋‹ค์‹œ ๊ทธ๋žฌ์–ด

์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ ์ž˜๋ชป๋œ ๊ฐ€์„ค

๊ฐ€์„ค 1 - ์ตœ์ ํ™” ํ”„๋กœ๊ทธ๋žจ์ด ์‹ค์ˆ˜๋ฅผ ํ•˜๊ณ  ์ž˜๋ชป๋œ ๊ณ„ํš์„ ์„ธ์›๋‹ˆ๋‹ค.

์‹คํ–‰ ๊ณ„ํš์„ ์‹œ๊ฐํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. https://explain.depesz.com/. ๊ทธ๋Ÿฌ๋‚˜ ์‚ฌ์ดํŠธ์—๋Š” ํฅ๋ฏธ๋กญ๊ฑฐ๋‚˜ ์œ ์šฉํ•œ ๋‚ด์šฉ์ด ํ‘œ์‹œ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์–ผํ• ๋ณด๋ฉด ์‹ค์ œ๋กœ ๋„์›€์ด ๋  ๋งŒํ•œ ๊ฒƒ์€ ์•„๋ฌด๊ฒƒ๋„ ์—†์Šต๋‹ˆ๋‹ค. ์ „์ฒด ์Šค์บ”์ด ์ตœ์†Œํ™”๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ณ„์†ํ•˜์„ธ์š”.

๊ฐ€์„ค 2 - Autovacuum ์ธก์—์„œ ๋ฒ ์ด์Šค์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋ ค๋ฉด ๋ธŒ๋ ˆ์ดํฌ๋ฅผ ์ œ๊ฑฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ autovacuum ๋ฐ๋ชฌ์€ ์ž˜ ์ž‘๋™ํ•˜๋ฉฐ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์‹ฌ๊ฐํ•œ ๋ถ€ํ•˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋‹ค๋ฅธ ๊ฒƒ์„ ์ฐพ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€์„ค 3 - ํ†ต๊ณ„๊ฐ€ ์˜ค๋ž˜๋˜์–ด ๋ชจ๋“  ๊ฒƒ์„ ๋‹ค์‹œ ๊ณ„์‚ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ†ต๊ณ„๋Š” ์ตœ์‹ ์ž…๋‹ˆ๋‹ค. Autovacuum์— ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•˜๋ฉด ์ด๋Š” ๋†€๋ผ์šด ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค.

์ตœ์ ํ™”๋ฅผ ์‹œ์ž‘ํ•ด๋ณด์ž

๋ฉ”์ธ ํ…Œ์ด๋ธ” 'wdata'๋Š” ํ™•์‹คํžˆ ์ž‘์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฑฐ์˜ 3๋งŒ ๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  Full Scan์ด ๋”ฐ๋ฅด๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ ์ด ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค.

ํ•ด์‹œ ์กฐ๊ฑด: ((w."SPENT_ID" = s."SPENT_ID") AND ((ํ•˜์œ„ ๊ณ„ํš 1) = s."SPENT_DATE"))
-> ์„œ์—ด ์Šค์บ” wdata w์—์„œ (๋น„์šฉ=0.00..574151.49ํ–‰=26886249 ๋„ˆ๋น„=46) (์‹ค์ œ ์‹œ๊ฐ„=0.005..8153.565ํ–‰=26873950 ๋ฃจํ”„=1)
์šฐ๋ฆฌ๋Š” ํ‘œ์ค€์ ์ธ ์ผ์„ ํ•ฉ๋‹ˆ๋‹ค: "์ž, ์ƒ‰์ธ์„ ๋งŒ๋“ค๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ๋‚ ์•„๊ฐˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค."
"SPENT_ID" ํ•„๋“œ์— ์ƒ‰์ธ์„ ์ƒ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ ๊ฒฐ๊ณผ :
์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•œ ์ฟผ๋ฆฌ ์‹คํ–‰ ๊ณ„ํš๋ชจ๋“  ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์‹œ์ž‘๋˜์—ˆ๋Š”์ง€ ๊ธฐ์–ตํ•˜์‹ญ๋‹ˆ๊นŒ? ๋ชจ๋“  ๊ฒŒ ์ฒ˜์Œ์ด์—ˆ๊ณ  ๋˜ ๋‹ค์‹œ ๊ทธ๋žฌ์–ด

๊ธ€์Ž„์š”, ๋„์›€์ด ๋๋‚˜์š”?
๊ทธ๊ฒƒ์€ : 8 222 351.640ms (2์‹œ๊ฐ„ ์กฐ๊ธˆ ๋„˜๊ฒŒ)
๊ทธ๊ฒƒ์€๋˜์—ˆ๋‹ค : 6 985ms(๊ฑฐ์˜ 431.575์‹œ๊ฐ„)
์ผ๋ฐ˜์ ์œผ๋กœ ๋™์ผํ•œ ์‚ฌ๊ณผ, ์ธก๋ฉด๋„.
๊ณ ์ „์„ ๊ธฐ์–ตํ•ฉ์‹œ๋‹ค.
โ€œ๊ฐ™์€ ๊ฒƒ์ด ์žˆ๋Š”๋ฐ ๋‚ ๊ฐœ๊ฐ€ ์—†๋‚˜์š”? ์ถ”๊ตฌํ•  ๊ฒƒ์ด๋‹ค."

๋ชจ๋“  ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์‹œ์ž‘๋˜์—ˆ๋Š”์ง€ ๊ธฐ์–ตํ•˜์‹ญ๋‹ˆ๊นŒ? ๋ชจ๋“  ๊ฒŒ ์ฒ˜์Œ์ด์—ˆ๊ณ  ๋˜ ๋‹ค์‹œ ๊ทธ๋žฌ์–ด

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

์ด์ œ ๊ฐ€์žฅ ํฅ๋ฏธ๋กœ์šด ์ ์€ ์šฐ๋ฆฌ๊ฐ€ ๊ณ„์†ํ•ด์„œ ์ตœ์ ํ™”ํ•˜๊ณ  ์š”์ฒญ์„ ๋‹ค๋“ฌ์„ ๊ฒƒ์ด๋ผ๋Š” ์ ์ž…๋‹ˆ๋‹ค.

XNUMX๋‹จ๊ณ„ - JOIN ์‚ฌ์šฉ

์ด์ œ ๋‹ค์‹œ ์ž‘์„ฑ๋œ ์š”์ฒญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค(๊ธ€์Ž„ ์ ์–ด๋„ ๋” ์•„๋ฆ„๋‹ค์›Œ):
JOIN์„ ์‚ฌ์šฉํ•œ ์ฟผ๋ฆฌSELECT
p.parameter_id๋กœ "PARAMETER_ID",
pd."PD_NAME" AS pd_name,
pd."CUSTOMER_PARTNUMBER" AS ๊ณ ๊ฐ_๋ถ€ํ’ˆ๋ฒˆํ˜ธ,
w. "LRM"์€ LRM์œผ๋กœ,
w. "LOTID"๋Š” ๋กœํ‹ฐ๋“œ๋กœ์„œ,
w.RTD_๊ฐ’์œผ๋กœ์„œ "RTD_VALUE",
w.โ€œLOWER_SPEC_LIMITโ€ AS lower_spec_limit,
w.โ€œUPPER_SPEC_LIMITโ€ AS upper_spec_limit,
p."TYPE_CALCUL" AS type_calcul,
s."SPENT_NAME" AS ์‚ฌ์šฉ_์ด๋ฆ„,
s.โ€œSPENT_DATEโ€ AS ์‚ฌ์šฉ_๋‚ ์งœ,
extract("SPENT_DATE"์˜ ์—ฐ๋„) AS ์—ฐ๋„,
("SPENT_DATE"์˜ ์›”)์„ ์›”๋กœ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.
s."REPORT_NAME" AS ๋ณด๊ณ ์„œ_์ด๋ฆ„,
p."STPM_NAME" AS stpm_name,
p.โ€œCUSTOMERPARAM_NAMEโ€ AS customerparam_name
FROM wdata w INNER JOIN์€ s ON w.โ€œSPENT_IDโ€=s.โ€โ€œSPENT_IDโ€๋ฅผ ์†Œ๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค.
INNER JOIN pmtr p ON p.โ€œPARAMETER_IDโ€ = w.โ€œPARAMETER_IDโ€
INNER JOIN sent_pd sp ON s.โ€œSPENT_IDโ€ = sp.โ€œSPENT_IDโ€
INNER JOIN pd pd ON pd.โ€œPD_IDโ€ = sp.โ€œPD_IDโ€
WHERE
s.โ€œSPENT_DATEโ€ >= '2018-07-01' AND s.โ€œSPENT_DATEโ€ <= '2018-09-30'AND
s.โ€œSPENT_DATEโ€ = (์ตœ๋Œ€ ์„ ํƒ(s2.โ€œSPENT_DATEโ€)
FROM wdata w2 INNER JOIN์€ s2 ON w2.โ€œSPENT_IDโ€=s2.โ€œSPENT_IDโ€๋ฅผ ์†Œ๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค.
INNER JOIN wdata w
ON w2.โ€œLRMโ€ = w.โ€œLRMโ€ );
๊ณ„ํš ์‹œ๊ฐ„: 2.486ms
์‹คํ–‰ ์‹œ๊ฐ„: 1223680.326ms

์ž, ์ฒซ ๋ฒˆ์งธ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค.
๊ทธ๊ฒƒ์€ : 6ms(๊ฑฐ์˜ 985์‹œ๊ฐ„).
๊ทธ๊ฒƒ์€๋˜์—ˆ๋‹ค : 1 223 680.326ms(20๋ถ„ ๋‚จ์ง“).
์ข‹์€ ๊ฒฐ๊ณผ. ์›์น™์ ์œผ๋กœ ์—ฌ๊ธฐ์„œ๋„ ๋ฉˆ์ถœ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋„ˆ๋ฌด ํฅ๋ฏธ๋กญ์ง€ ์•Š์•„์„œ ๋ฉˆ์ถœ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
Mbo

๋ชจ๋“  ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์‹œ์ž‘๋˜์—ˆ๋Š”์ง€ ๊ธฐ์–ตํ•˜์‹ญ๋‹ˆ๊นŒ? ๋ชจ๋“  ๊ฒŒ ์ฒ˜์Œ์ด์—ˆ๊ณ  ๋˜ ๋‹ค์‹œ ๊ทธ๋žฌ์–ด

XNUMX๋‹จ๊ณ„ - ์ƒ๊ด€๋œ ํ•˜์œ„ ์ฟผ๋ฆฌ ์ œ๊ฑฐ

๋ณ€๊ฒฝ๋œ ์š”์ฒญ ํ…์ŠคํŠธ:
์ƒ๊ด€ ํ•˜์œ„ ์ฟผ๋ฆฌ ์—†์ŒSELECT
p.parameter_id๋กœ "PARAMETER_ID",
pd."PD_NAME" AS pd_name,
pd."CUSTOMER_PARTNUMBER" AS ๊ณ ๊ฐ_๋ถ€ํ’ˆ๋ฒˆํ˜ธ,
w. "LRM"์€ LRM์œผ๋กœ,
w. "LOTID"๋Š” ๋กœํ‹ฐ๋“œ๋กœ์„œ,
w.RTD_๊ฐ’์œผ๋กœ์„œ "RTD_VALUE",
w.โ€œLOWER_SPEC_LIMITโ€ AS lower_spec_limit,
w.โ€œUPPER_SPEC_LIMITโ€ AS upper_spec_limit,
p."TYPE_CALCUL" AS type_calcul,
s."SPENT_NAME" AS ์‚ฌ์šฉ_์ด๋ฆ„,
s.โ€œSPENT_DATEโ€ AS ์‚ฌ์šฉ_๋‚ ์งœ,
extract("SPENT_DATE"์˜ ์—ฐ๋„) AS ์—ฐ๋„,
("SPENT_DATE"์˜ ์›”)์„ ์›”๋กœ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.
s."REPORT_NAME" AS ๋ณด๊ณ ์„œ_์ด๋ฆ„,
p."STPM_NAME" AS stpm_name,
p.โ€œCUSTOMERPARAM_NAMEโ€ AS customerparam_name
FROM wdata w INNER JOIN์€ ON s.โ€œSPENT_IDโ€ = w.โ€œSPENT_IDโ€๋ฅผ ์†Œ๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค.
INNER JOIN pmtr p ON p.โ€œPARAMETER_IDโ€ = w.โ€œPARAMETER_IDโ€
INNER JOIN sent_pd sp ON s.โ€œSPENT_IDโ€ = sp.โ€œSPENT_IDโ€
INNER JOIN pd pd ON pd.โ€œPD_IDโ€ = sp.โ€œPD_IDโ€
INNER JOIN (SELECT w2.โ€œLRMโ€, MAX(s2.โ€œSPENT_DATEโ€)
FROM ์†Œ๋น„๋œ s2 INNER JOIN wdata w2 ON s2.โ€œSPENT_IDโ€ = w2.โ€œSPENT_IDโ€
w2.โ€œLRMโ€์œผ๋กœ ๊ทธ๋ฃนํ™”
) md on w.โ€œLRMโ€ = md.โ€œLRMโ€
WHERE
s."SPENT_DATE" >= '2018-07-01' AND s."SPENT_DATE" <= '2018-09-30';
๊ณ„ํš ์‹œ๊ฐ„: 2.291ms
์‹คํ–‰ ์‹œ๊ฐ„: 165021.870ms

๊ทธ๊ฒƒ์€ : 1 223 680.326ms(20๋ถ„ ๋‚จ์ง“).
๊ทธ๊ฒƒ์€๋˜์—ˆ๋‹ค : 165 021.870ms(2๋ถ„ ๋‚จ์ง“).
์ด๊ฒƒ์€ ์ด๋ฏธ ๊ฝค ์ข‹์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์˜๊ตญ์ธ์ด ๋งํ–ˆ๋“ฏ์ด "๊ทธ๋Ÿฌ๋‚˜ ํ•ญ์ƒ ๊ทธ๋Ÿฌ๋‚˜" ๋„ˆ๋ฌด ์ข‹์€ ๊ฒฐ๊ณผ๋Š” ์ž๋™์œผ๋กœ ์˜์‹ฌ์„ ๋ถˆ๋Ÿฌ์ผ์œผํ‚ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ๋ญ”๊ฐ€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒ๊ด€๋œ ํ•˜์œ„ ์ฟผ๋ฆฌ๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ์ฟผ๋ฆฌ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๊ฐ€์„ค์€ ์ •ํ™•ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ตœ์ข… ๊ฒฐ๊ณผ๊ฐ€ ์ •ํ™•ํ•˜๋ ค๋ฉด ์•ฝ๊ฐ„ ์กฐ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๊ฒฐ๊ณผ์ ์œผ๋กœ ์ฒซ ๋ฒˆ์งธ ์ค‘๊ฐ„ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์ƒ๊ด€ ํ•˜์œ„ ์ฟผ๋ฆฌ ์—†์ด ํŽธ์ง‘๋œ ์ฟผ๋ฆฌSELECT
p.parameter_id๋กœ "PARAMETER_ID",
pd."PD_NAME" AS pd_name,
pd."CUSTOMER_PARTNUMBER" AS ๊ณ ๊ฐ_๋ถ€ํ’ˆ๋ฒˆํ˜ธ,
w. "LRM"์€ LRM์œผ๋กœ,
w. "LOTID"๋Š” ๋กœํ‹ฐ๋“œ๋กœ์„œ,
w.RTD_๊ฐ’์œผ๋กœ์„œ "RTD_VALUE",
w.โ€œLOWER_SPEC_LIMITโ€ AS lower_spec_limit,
w.โ€œUPPER_SPEC_LIMITโ€ AS upper_spec_limit,
p."TYPE_CALCUL" AS type_calcul,
s."SPENT_NAME" AS ์‚ฌ์šฉ_์ด๋ฆ„,
s.โ€œSPENT_DATEโ€ AS ์‚ฌ์šฉ_๋‚ ์งœ,
์ถ”์ถœ(s.โ€œSPENT_DATEโ€์˜ ์—ฐ๋„) AS ์—ฐ๋„,
(s.โ€œSPENT_DATEโ€์˜ ์›”)์„ ์›”๋กœ ์ถ”์ถœํ•˜๊ณ ,
s."REPORT_NAME" AS ๋ณด๊ณ ์„œ_์ด๋ฆ„,
p."STPM_NAME" AS stpm_name,
p.โ€œCUSTOMERPARAM_NAMEโ€ AS customerparam_name
FROM wdata w INNER JOIN์€ ON s.โ€œSPENT_IDโ€ = w.โ€œSPENT_IDโ€๋ฅผ ์†Œ๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค.
INNER JOIN pmtr p ON p.โ€œPARAMETER_IDโ€ = w.โ€œPARAMETER_IDโ€
INNER JOIN sent_pd sp ON s.โ€œSPENT_IDโ€ = sp.โ€œSPENT_IDโ€
INNER JOIN pd pd ON pd.โ€œPD_IDโ€ = sp.โ€œPD_IDโ€
๋‚ด๋ถ€ ์กฐ์ธ( SELECT w2.โ€œLRMโ€, MAX(s2.โ€œSPENT_DATEโ€) AS โ€œSPENT_DATEโ€
FROM ์†Œ๋น„๋œ s2 INNER JOIN wdata w2 ON s2.โ€œSPENT_IDโ€ = w2.โ€œSPENT_IDโ€
w2.โ€œLRMโ€์œผ๋กœ ๊ทธ๋ฃนํ™”
) md ON md.โ€œSPENT_DATEโ€ = s.โ€œSPENT_DATEโ€ AND md.โ€œLRMโ€ = w.โ€œLRMโ€
WHERE
s."SPENT_DATE" >= '2018-07-01' AND s."SPENT_DATE" <= '2018-09-30';
๊ณ„ํš ์‹œ๊ฐ„: 3.192ms
์‹คํ–‰ ์‹œ๊ฐ„: 208014.134ms

๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๊ฐ€ ์ตœ์ข…์ ์œผ๋กœ ๋งŒ์กฑํ•  ์ˆ˜ ์žˆ๋Š” ์ฒซ ๋ฒˆ์งธ ๊ฒฐ๊ณผ๋Š” ๊ณ ๊ฐ์—๊ฒŒ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์ด ๋ถ€๋„๋Ÿฌ์šด ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค.
๋‹ค์Œ์œผ๋กœ ์‹œ์ž‘๋จ: 8 222 351.640 ms (2์‹œ๊ฐ„ ์ด์ƒ)
์šฐ๋ฆฌ๋Š” 1ms(223๋ถ„ ์กฐ๊ธˆ ๋„˜๋Š” ์‹œ๊ฐ„)๋ฅผ ๋‹ฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.
๊ฒฐ๊ณผ(์ค‘๊ฐ„): 208 014.134ms(3๋ถ„ ๋‚จ์ง“).

ํ›Œ๋ฅญํ•œ ๊ฒฐ๊ณผ.

๋ชจ๋“  ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์‹œ์ž‘๋˜์—ˆ๋Š”์ง€ ๊ธฐ์–ตํ•˜์‹ญ๋‹ˆ๊นŒ? ๋ชจ๋“  ๊ฒŒ ์ฒ˜์Œ์ด์—ˆ๊ณ  ๋˜ ๋‹ค์‹œ ๊ทธ๋žฌ์–ด

ํ•ฉ๊ณ„

์šฐ๋ฆฌ๋Š” ๊ฑฐ๊ธฐ์„œ ๋ฉˆ์ถœ ์ˆ˜๋„ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜โ€ฆ
์‹์š•์€ ์‹์‚ฌ์™€ ํ•จ๊ป˜ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ๊ฑท๋Š” ์‚ฌ๋žŒ์€ ๊ธธ์„ ๋งˆ์Šคํ„ฐํ•  ๊ฒƒ์ด๋‹ค. ๋ชจ๋“  ๊ฒฐ๊ณผ๋Š” ์ค‘๊ฐ„์ž…๋‹ˆ๋‹ค. ๋ฉˆ์ถ”๊ณ  ์ฃฝ์—ˆ์Šต๋‹ˆ๋‹ค. ๋“ฑ.
์ตœ์ ํ™”๋ฅผ ๊ณ„์†ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
์ข‹์€ ์ƒ๊ฐ์ด์—์š”. ํŠนํžˆ ๊ณ ๊ฐ์ด ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์•˜๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•˜๋ฉด ๋”์šฑ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‹ฌ์ง€์–ด ๊ทธ๊ฒƒ์„ ์œ„ํ•ด ๊ฐ•๋ ฅํ•˜๊ฒŒ.

์ด์ œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์žฌ์„ค๊ณ„ํ•ด์•ผ ํ•  ๋•Œ์ž…๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ ๊ตฌ์กฐ ์ž์ฒด๋Š” ๋” ์ด์ƒ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค(๋‚˜์ค‘์— ๋ฐํ˜€์ง„ ๊ฒƒ์ฒ˜๋Ÿผ ๋ชจ๋“  ๊ฒƒ์ด ์‹ค์ œ๋กœ ์‹คํŒจํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์˜ต์…˜์ด ์žˆ์ง€๋งŒ). ๊ทธ๋Ÿฌ๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„ ์ตœ์ ํ™” ๋ฐ ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์€ ์ด๋ฏธ ๋งค์šฐ ์œ ๋งํ•œ ์•„์ด๋””์–ด์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ํฅ๋ฏธ ๋กญ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ํ•œ ๋ฒˆ, ๋‹น์‹ ์˜ ์ Š์Œ์„ ๊ธฐ์–ตํ•˜์‹ญ์‹œ์˜ค. ์ €๋Š” ๋ฐ”๋กœ DBA๊ฐ€ ๋œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ”„๋กœ๊ทธ๋ž˜๋จธ(BASIC, ์–ด์…ˆ๋ธ”๋Ÿฌ, C, ๋”๋ธ” ํ”Œ๋Ÿฌ์Šค C, Oracle, plsql)๋กœ ์„ฑ์žฅํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๋ณ„๋„์˜ ํšŒ๊ณ ๋ก์— ๋Œ€ํ•œ ํฅ๋ฏธ๋กœ์šด ์ฃผ์ œ์ž…๋‹ˆ๋‹ค ;-).
๊ทธ๋Ÿฌ๋‚˜ ์‚ฐ๋งŒํ•ด์ง€์ง€ ๋ง์ž.

๋”ฐ๋ผ์„œ,

๋ชจ๋“  ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์‹œ์ž‘๋˜์—ˆ๋Š”์ง€ ๊ธฐ์–ตํ•˜์‹ญ๋‹ˆ๊นŒ? ๋ชจ๋“  ๊ฒŒ ์ฒ˜์Œ์ด์—ˆ๊ณ  ๋˜ ๋‹ค์‹œ ๊ทธ๋žฌ์–ด

์•„๋‹ˆ๋ฉด ํŒŒํ‹ฐ์…”๋‹์ด ๋„์›€์ด ๋ ๊นŒ์š”?
์Šคํฌ์ผ๋Ÿฌ - "์˜ˆ, ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ํฌํ•จํ•˜์—ฌ ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค."

๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ์™„์ „ํžˆ ๋‹ค๋ฅธ ์ด์•ผ๊ธฐ์ž…๋‹ˆ๋‹ค ...

๊ณ„์†โ€ฆ

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€