๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Database/Brent Ozar Unlimited

#5. ๋‘ ๋ฒˆ์งธ ์ˆ˜์—… - 2 Lab: Indexing for WHERE

๋“œ๋””์–ด ๋‘ ๋ฒˆ์งธ ์ˆ˜์—…(์‚ฌ์‹ค์ƒ ์ฒซ ๋ฒˆ์งธ ์ˆ˜์—…์ด๋‹ค. ์ €๋ฒˆ ์˜์ƒ์€ prerequisite์ด์—ˆ์–ด์„œ..)์„ ์‹œ์ž‘ํ•œ๋‹ค. ์ด๋ฒˆ ์ˆ˜์—…์€ Indexing for WHERE์œผ๋กœ ์ƒํ™ฉ์— ๋งž๊ฒŒ ์ธ๋ฑ์Šค๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๋ฒ•์„ ๋ฐฐ์šฐ๋Š” ์ˆ˜์—…์ธ ๊ฒƒ ๊ฐ™๋‹ค.

 

์ œ์ผ ๋จผ์ € ํ•  ์ผ์€ StackOverflow ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ชจ๋‘ drop ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

โ–  ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ œ

์•„๋ž˜ ์ฟผ๋ฆฌ๋ฅผ supportํ•˜๋Š” ์•Œ๋งž์€ ์ธ๋ฑ์Šค ๊ตฌ์„ฑํ•˜๊ธฐ.

 

 

๋จผ์ € ์ด ์ฟผ๋ฆฌ๊ฐ€ ์–ผ๋งŒํผ์˜ logical reads๋ฅผ ํ•˜๋Š”์ง€๋ถ€ํ„ฐ ํ™•์ธํ•ด๋ณด์ž.

 

 

์ด ์ฟผ๋ฆฌ๋Š” 7,778 ํŽ˜์ด์ง€์˜ logical reads๋ฅผ ํ•œ๋‹ค. ์ด์ œ ์ธ๋ฑ์Šค๋ฅผ ์–ด๋–ป๊ฒŒ ์„ธ์šธ์ง€๋ฅผ ๋ด์•ผํ•˜๋Š”๋ฐ, ์ฟผ๋ฆฌ๋ฅผ ๋ณด๋‹ˆ๊นŒ WebsiteUrl๊ณผ Location์œผ๋กœ ์ธ๋ฑ์Šค ์ปฌ๋Ÿผ์„ ๊ตฌ์„ฑํ•˜๊ณ  DisplayName๊ณผ Id๋ฅผ INCLUDEํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™์€ ๋А๋‚Œ์ด ๋“ ๋‹ค. ๋ฌธ์ œ๋Š” WebsiteUrl๊ณผ Location ์ค‘ ์–ด๋–ค ์ปฌ๋Ÿผ์„ ์„ ํ–‰ ์ปฌ๋Ÿผ์œผ๋กœ ํ•  ๊ฒƒ์ธ์ง€์ด๋‹ค.

 

 

์ด๋ ‡๊ฒŒ ๊ฑด์ˆ˜๋ฅผ ๋น„๊ตํ•ด๋ณด๋‹ˆ WebsiteUrl์ด Location ๋ณด๋‹ค ๋” selectiveํ•ด ๋ณด์ธ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด WebsiteUrl์„ ์„ ํ–‰์ปฌ๋Ÿผ์œผ๋กœ ๋‘๋ฉด ๋˜๋‚˜? ์‚ฌ์‹ค ์–ด๋–ค ์ˆœ์„œ๋กœ ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“ค๋“  logical reads ๊ด€์ ์—์„œ๋Š” ์ฐจ์ด๊ฐ€ ์—†๋‹ค. ํ™•์ธํ•ด๋ณด์ž.

 

 

  • INCLUDE(DisplayName) : Id๋Š” PK๋‹ˆ๊นŒ INCLUDE์— ๊ตณ์ด ํฌํ•จ์‹œํ‚ค์ง€ ์•Š์•˜๋‹ค.
  • WITH(MAXDOP = 0) : MAXDOP ์€ ํ•˜๋‚˜ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์„œ ๋˜๋Š” CPU๊ฐ€ ์žˆ๋Š” ์ปดํ“จํ„ฐ์—์„œ ๊ฐ ์ฟผ๋ฆฌ์— ๋Œ€ํ•œ ๋‹จ์ผ ๋ฌธ์„ ์‹คํ–‰ํ•˜๋Š”๋ฐ ๋ณ‘๋ ฌ ์‹คํ–‰ ๊ณ„ํš์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ์„ธ์„œ ์ˆ˜ ์ด๋‹ค. (์ถœ์ฒ˜: https://sungwookkang.com/387) MAXDOP์„ 0์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ๋ชจ๋“  ํ”„๋กœ์„ธ์„œ๋ฅผ ๋‹ค ์‚ฌ์šฉํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. ์ฟผ๋ฆฌ ์ˆ˜์ค€์—์„œ์˜ MAXDOP ํžŒํŠธ๋Š” ์„œ๋ฒ„ ์ž์ฒด์˜ max degree of parallelism์„ ์šฐ์„ ํ•œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ํ•˜๋Š” ์ฟผ๋ฆฌ(์ง€๊ธˆ ๋‹น์žฅ ๋นจ๋ฆฌ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•˜๋Š”?)์— ์ด ํžŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์œ ์šฉํ•  ๋•Œ๊ฐ€ ๋งŽ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ๋งŒ๋“  ์ธ๋ฑ์Šค๋“ค์„ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ์˜ ์„ฑ๋Šฅ์„ ํ™•์ธํ•ด๋ณด์ž.

 

 

๋‘˜ ๋‹ค logical reads๊ฐ€ 7,778์—์„œ 3์œผ๋กœ ์ค„์–ด๋“  ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์‹คํ–‰๊ณ„ํš๋„ ํ™•์ธํ•ด๋ณด์ž.

 

 

๋‘ ์ธ๋ฑ์Šค ๋ชจ๋‘ ๋™์ผํ•œ ์„ฑ๋Šฅ๊ณผ ์‹คํ–‰๊ณ„ํš์„ ๊ฐ€์ง์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

โ–  ๋‘ ๋ฒˆ์งธ ๋ฌธ์ œ

์•„๋ž˜ ์ฟผ๋ฆฌ๋ฅผ supportํ•˜๋Š” ์•Œ๋งž์€ ์ธ๋ฑ์Šค ๊ตฌ์„ฑํ•˜๊ธฐ.

 

 

๋จผ์ € AS_IS์˜ logical reads ํ™•์ธ

 

 

๊ฐ ์กฐ๊ฑด์˜ ๊ฑด์ˆ˜ ๋น„๊ตํ•ด๋ณด๊ธฐ (๊ฐ ์ปฌ๋Ÿผ์˜ selectivity ํ™•์ธ)

 

 

์œ„ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์•˜์„ ๋•Œ DownVotes๋ณด๋‹ค UpVotes ์ปฌ๋Ÿผ์ด ๋” selective ํ•ด ๋ณด์ธ๋‹ค. ์–‘์ชฝ ์ปฌ๋Ÿผ ๋ชจ๋‘ ์„ ํ–‰๋˜๋Š” ์ธ๋ฑ์Šค๋ฅผ ๊ฐ๊ฐ ๋งŒ๋“ค์–ด์„œ ๋น„๊ตํ•ด๋ณด์ž.

 

 

๊ฐ ์ธ๋ฑ์Šค์˜ ์‹คํ–‰๊ณ„ํš์„ ๋น„๊ตํ•ด๋ณด์ž.

 

 

๋‘˜ ๋‹ค index seek๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค. (์–ด๋””์„œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์•ผํ•  ์ง€ ์•Œ๊ณ  ์žˆ๋‹ค๋Š” ๋œป) ์‹คํ–‰๊ณ„ํš์„ ์กฐ๊ธˆ ๋” ์ž์„ธํžˆ ๋“ค์—ฌ๋‹ค๋ณด์ž.

 

1) ์ฒซ ๋ฒˆ์งธ ์ฟผ๋ฆฌ

 

์‹คํ–‰๊ณ„ํš์„ ๋ณด๋ฉด Number of Rows Read์™€ Actual Number of Rows๊ฐ€ ๋™์ผํ•˜๋‹ค. → fantastic

๋‘ ๊ฐœ์˜ ๊ฐ’์ด ๋™์ผํ•˜๋‹ค๋Š” ๊ฒƒ์€ ๋”ฑ ํ•„์š”ํ•œ ๋งŒํผ ์ฝ์—ˆ๋‹ค๋Š” ๋œป์ด๊ธฐ์— ๋ถˆํ•„์š”ํ•œ read๊ฐ€ ์—†์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

 

2) ๋‘ ๋ฒˆ์งธ ์ฟผ๋ฆฌ

Number of Rows Read๊ฐ€ Actual Number of Rows๋ณด๋‹ค ํฌ๋‹ค. ํ•„์š”ํ•œ ์–‘๋ณด๋‹ค ๋” ๋งŽ์ด ์ฝ์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ๋œปํ•œ๋‹ค. 

 

์™œ ๋” selective ํ•œ ์ปฌ๋Ÿผ์„ ์„ ํ–‰ ์ปฌ๋Ÿผ์œผ๋กœ ๋‘” ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ ๋” ๋งŽ์ด ์ฝ์—ˆ์„๊นŒ?

 

๊ฐ ์ธ๋ฑ์Šค์˜ ๋‚ด๋ถ€๊ฐ€ ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ๋Š”์ง€ ํ•œ ๋ฒˆ ํ™•์ธํ•ด๋ณด์ž.

 

1) ์ฒซ ๋ฒˆ์งธ ์ธ๋ฑ์Šค

 

DownVotes_UpVotes ์ธ๋ฑ์Šค๊ฐ€ DownVotes = 0 AND UpVotes > 100 ์ธ ์กฐ๊ฑด์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ์–ด๋–ค ์ˆœ์„œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๋Š”์ง€ ๋ณผ ๊ฒƒ์ด๋‹ค. ๋จผ์ € DownVotes = 0 ์กฐ๊ฑด์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚˜์˜ฌ ๊ฒƒ์ด๋‹ค.

 

 

DownVotes = 0 ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š”๋ฐ UpVotes๋Š” ์ด๋ฏธ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ์ด ๋œ ์ƒํƒœ์ด๋‹ค.

 

 

์ด๋ ‡๊ฒŒ DownVotes = 0 ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์•„๋†“๊ณ , ๊ทธ ๋‹ค์Œ์— UpVotes > 100 ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๊ณ ์ž ํ•˜๋ฉด,

 

 

์ด๋ฏธ UpVotes๋„ ์ •๋ ฌ์ด ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ๋ฐ”๋กœ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค. UpVotes๊ฐ€ 101์ธ ์ง€์ ์„ ์•Œ๊ณ  ์ด ์ง€์ ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋ฉด ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ๋‹ค. ์–ด๋””์„œ๋ถ€ํ„ฐ ์–ด๋””๊นŒ์ง€ ์ฝ์–ด์•ผํ• ์ง€ ์ •ํ™•ํžˆ ์•Œ๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์ฝ์€ row์™€ ๊ฒฐ๊ณผ row ์ˆ˜๊ฐ€ ๋™์ผํ•  ์ˆ˜ ์žˆ๋‹ค. → ์ ์ ˆํ•œ ์ธ๋ฑ์Šค

์‹ค์ œ๋กœ ์ธ๋ฑ์Šค ํžŒํŠธ๋ฅผ ์ฃผ์ง€ ์•Š์•˜์„ ๋•Œ ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ ์ฒซ ๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

2) ๋‘ ๋ฒˆ์งธ ์ธ๋ฑ์Šค

๋‘ ๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ณผ์ •๋„ visualization ํ•ด๋ณด์ž.

 

 

๊ฒฐ๊ณผ ๋ฐ์ดํ„ฐ์˜ ์ฒซ ๋ถ€๋ถ„์„ ๋ณด๋ฉด ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” UpVotes > 100 ์ด์ƒ์ธ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚˜์˜จ๋‹ค. ๊ทธ ๋’ค์˜ DownVotes๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ๋‹ค. ๊ทธ๋ ‡์ง€๋งŒ ์กฐ๊ธˆ ๋” ๋‚ด๋ ค๋ณด๋ฉด UpVotes๋Š” ์กฐ๊ฑด์— ๋งž๋Š”๋ฐ DownVotes๊ฐ€ ์กฐ๊ฑด์— ๋งž์ง€ ์•Š๋Š”(0์ด ์•„๋‹Œ) ๋ฐ์ดํ„ฐ๋“ค์ด ๋“ฑ์žฅํ•œ๋‹ค.

 

 

UpVotes, DownVotes ์ˆœ์œผ๋กœ ์ •๋ ฌ์ด ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— UpVotes ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ์ฝ๋‹ค๋ณด๋ฉด DownVotes๊ฐ€ 0์ด ์•„๋‹Œ ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘๊ฐ„์— ๋งž๋‹ฅ๋œจ๋ฆฌ๊ฒŒ ๋œ๋‹ค.

 

๊ทธ๋Ÿฌ๋ฉด ์—ฌ๊ธฐ์„œ ์ด๋ ‡๊ฒŒ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค. UpVotes๊ฐ€ 100๋ณด๋‹ค ํฐ ๋ฐ์ดํ„ฐ๋“ค ์ค‘์—์„œ DownVotes๊ฐ€ 0์ธ ์• ๋“ค ์ญ‰ ์ฝ๋‹ค๊ฐ€ DownVotes๊ฐ€ 1์ธ ์• ๋“ค์„ ๋งŒ๋‚˜๊ฒŒ ๋˜๋ฉด ๋‚˜๋จธ์ง€๋ฅผ ์•ˆ ์ฝ๊ณ  ๋‹ค์Œ UpVotes(UpVotes=102)๋กœ ๋„˜์–ด๊ฐ€๋ฉด ๋˜์ง€ ์•Š์„๊นŒ?

→ SQL Server๋Š” ์ด๋Ÿฐ ๊ฑฐ ๋ชปํ•œ๋‹ค.

 

 

SQL Server๋Š” ์—ฌ๊ธฐ์„œ๋ถ€ํ„ฐ ์ฝ์„๋ž˜, ๋ผ๊ณ  ์ •ํ•˜๋ฉด ๊ฑฐ๊ธฐ์„œ๋ถ€ํ„ฐ ์ญ‰ ์ฝ์–ด์•ผ ํ•œ๋‹ค.

 

 

๋ญ ์–ด์ฉ” ์ˆ˜ ์—†๋‹ค. ๋ˆ ๋งŽ์ด ๋ฒŒ์–ด์„œ ์˜ค๋ผํด(์„ธ๊ณ„ ์ตœ๊ณ  ๋น„์‹ผ DB) ์“ฐ๋ฉด ๋œ๋‹ค. (์˜ค๋ผํด์€ skip scan์ด๋ผ๋Š” ๊ฒƒ์ด ์žˆ๋‹ค.)

 

 

์•„๋ฌดํŠผ ๋ณธ๋ก ์œผ๋กœ ๋Œ์•„์™€์„œ, SQL Server๋Š” ๊ทธ๋ ‡๊ฒŒ ํ•„์š”ํ•œ ๊ฒƒ๋งŒ ๊ฑด๋„ˆ๋›ฐ๊ธฐ ๋ชปํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋Ÿฐ ๊ฒฝ์šฐ inequality ์กฐ๊ฑด์„ ์‚ฌ์šฉํ•˜๋Š” ์ปฌ๋Ÿผ์„ ์ธ๋ฑ์Šค์˜ ์„ ํ–‰ ์ปฌ๋Ÿผ์œผ๋กœ ๋‘๋Š” ๊ฒƒ์€ ์ข‹์ง€ ๋ชปํ•˜๋‹ค.

๋‘ ์ธ๋ฑ์Šค๋ฅผ ๊ฐ๊ฐ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ์˜ logical reads๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

โ–  ์„ธ ๋ฒˆ์งธ ๋ฌธ์ œ

 

AS-IS์˜ logical reads ํŒŒ์•…ํ•˜๊ธฐ.

 

 

WHERE์ ˆ ์กฐ๊ฑด : Location LIKE ๊ฒ€์ƒ‰, Reputation inequality ์กฐ๊ฑด

 

๊ฐ ์กฐ๊ฑด์— ํ•ด๋‹นํ•˜๋Š” ๊ฑด์ˆ˜ ํŒŒ์•…ํ•˜๊ธฐ.

 

 

Reputation์ด ๋” selectiveํ•ด ๋ณด์ธ๋‹ค. → ๋‚˜์˜ ๊ฒ€์ƒ‰ ์˜์—ญ์„ ์ขํ˜€์ฃผ๋Š” ๋ฐ ์žˆ์–ด์„œ Reputation์ด ์ข€ ๋” ๋„์›€์ด ๋  ๊ฒƒ ๊ฐ™๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ์ธ๋ฑ์Šค ์„ ํ–‰ ์ปฌ๋Ÿผ์— Reputation์„ ๋„ฃ๊ธด ํ• ๊ฑด๋ฐ, Location๋„ ์ธ๋ฑ์Šค ์ปฌ๋Ÿผ์— ๋“ค์–ด๊ฐ€์•ผ ํ• ๊นŒ? INCLUDE๋กœ๋งŒ ํฌํ•จ์‹œํ‚ค๋Š” ๊ฒŒ ๋‚ซ์ง€ ์•Š๊ฒ ๋‚˜?

 

ํ™•์ธํ•ด๋ณด์ž.

 

 

์ด์ œ ๊ฐ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ์˜ ์‹คํ–‰๊ณ„ํš์„ ๋น„๊ตํ•ด๋ณด์ž.

 

 

์œ„ ๋‘ ์‹คํ–‰๊ณ„ํš์„ ๋ณด๋ฉด number of rows read์™€ actual number of rows๊ฐ€ ๋™์ผํ•˜๊ฒŒ ์ฐจ์ด๊ฐ€ ๋‚œ๋‹ค. 

 

 

 

๋‘ ๊ฐ’์ด ์ฐจ์ด๊ฐ€ ๋‚˜๋Š” ๊ฑด ์–ด์ฉ” ์ˆ˜ ์—†๋‹ค. Location LIKE '%Germany%' ์ด ์กฐ๊ฑด์„ ์ฐพ์œผ๋ ค๋ฉด ์–ด๋А ํ•œ ์ง€์ ์œผ๋กœ seekํ•  ์ˆ˜ ์—†๋‹ค. ๋‹ค ๊นŒ ๋ด์•ผ ํ•œ๋‹ค.

 

๊ฒฐ๋ก ์€, ์ด๋Ÿฐ ๊ฒฝ์šฐ Location์ด ์ธ๋ฑ์Šค ํ‚ค๋กœ ๋“ค์–ด๊ฐ€๋“  INCLUDE๋กœ ๋“ค์–ด๊ฐ€๋“  ์„ฑ๋Šฅ ์ƒ ์ฐจ์ด๋Š” ์—†๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

๊ทธ๋Ÿฐ๋ฐ ์ด ๋‘ ์ธ๋ฑ์Šค ๊ฐ„์˜ ์ฐจ์ด๋Š” ์žˆ๋‹ค. sp_BlitzIndex๋ฅผ ์‹คํ–‰ํ•ด๋ณด์ž.

 

 

๋ฐ›์•„๋†“์€ ์ค„ ์•Œ์•˜๋Š”๋ฐ ์•ˆ ๋ฐ›์•˜๋‚˜ ๋ณด๋‹ค. 

 

 

์ด sql ํ‚คํŠธ๋Š” brent ozar ์‚ฌ์ดํŠธ์—์„œ ์‹ ์ฒญํ•˜๋ฉด ๋ฌด๋ฃŒ๋กœ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. (๋ฉ”์ผ๋กœ ์ด์ค€๋‹ค.) ์–˜๋„ค๋“ค์„ ์„ค์น˜ํ•œ ํ›„ ๋‹ค์‹œ ์ด์–ด์„œ ์จ์•ผ์ง€.