๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
CS/Database

์—…๋ฌด์— ๋ฐ”๋กœ ์“ฐ๋Š” SQL ํŠœ๋‹ 1 - SQL ํŠœ๋‹ ์ด๋ก 

by ์ฃผ๋ฐœ2 2024. 10. 7.
๋ฐ˜์‘ํ˜•

ํ•ด๋‹น ํฌ์ŠคํŒ…์€ ์—…๋ฌด์— ๋ฐ”๋กœ ์“ฐ๋Š” SQL ํŠœ๋‹ ๋„์„œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

์ด์ „ ์ง์žฅ์—์„œ๋Š” ์ฃผ๋กœ ์˜ค๋ผํด์„ ์‚ฌ์šฉํ•˜์˜€๊ณ , ์•ž์œผ๋กœ๋Š” MySQL(MariaDB, Postgresql...) ์„ ์‚ฌ์šฉํ•  ์˜ˆ์ •์ด๊ธฐ์— ๊ด€๋ จํ•˜์—ฌ ์‹คํ–‰ ๊ณ„ํš ๋ฐ ์—ฌ๋Ÿฌ SQL ํŠœ๋‹ ๊ธฐ๋ฒ•๋“ค์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด ๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์ „์— Real MySQL ๋„์„œ๋ฅผ ํ†ตํ•ด ์ด๋ก ์ ์œผ๋กœ ํ•™์Šตํ•˜์˜€์ง€๋งŒ, ์˜ค๋ผํด์„ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋‹ค๋ณด๋‹ˆ MySQL์˜ ์ฃผ์š” ์‹คํ–‰ ๊ณ„ํš์— ๋Œ€ํ•ด์„œ๋Š” ์ •๋ฆฌ ์ฐจ์›์—์„œ ๋‹ค์‹œ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์ฑ…์˜ ์˜ˆ์ œ๋“ค์„ ํ†ตํ•ด ํ‰์†Œ์— ์ด๋ก ์œผ๋กœ๋งŒ ์•Œ๊ณ  ์žˆ์—ˆ๋˜ ๋‚ด์šฉ๋“ค์ด๋‚˜ ๊ฒฝํ—˜์ด ์žˆ์—ˆ๋˜ ํŠœ๋‹๋“ค ๋“ฑ ๋‹ค์–‘ํ•˜๊ฒŒ ๊ฒฝํ—˜ํ•ด๋ณผ ์ˆ˜ ์žˆ์–ด ์ข‹์•˜์Šต๋‹ˆ๋‹ค.

์ฑ…์˜ ์˜ˆ์ œ๋“ค์„ ํ†ตํ•ด ์ „ํ˜€ ์ƒˆ๋กœ์šด ์ ‘๊ทผ์ด๋‚˜, ํ‰์†Œ์— ์ด๋ก ์œผ๋กœ๋งŒ ์•Œ๊ณ  ์žˆ์—ˆ๋˜ ๋‚ด์šฉ๋“ค, ์กฐ๊ธˆ์ด๋‚˜๋งˆ ๊ฒฝํ—˜์ด ์žˆ์—ˆ๋˜ ์ฟผ๋ฆฌ ๋“ฑ ์ •ํ•ด์ง„ ๋ฐ์ดํ„ฐ ํ˜•์‹์ด๊ธด ํ•˜์ง€๋งŒ ๋‹ค์–‘ํ•˜๊ฒŒ ๊ฒฝํ—˜ํ•ด๋ณผ ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์•˜์Šต๋‹ˆ๋‹ค.

 

์‹ค์ œ SQL ํŠœ๋‹์„ ์ง„ํ–‰ํ•˜๊ธฐ ์ „ ๊ฐ„๋‹จํ•˜๊ฒŒ ํŠœ๋‹์— ํ•„์š”ํ•œ ์šฉ์–ด๋“ค์„ ์ •๋ฆฌํ•˜๊ณ , ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜๋ฉฐ ๊ฐœ์„ ํ•ด๋ด…๋‹ˆ๋‹ค.

 

1. SQL ํŠœ๋‹ ์šฉ์–ด๋ฅผ ์ง๊ด€์ ์œผ๋กœ ์ดํ•ดํ•˜๊ธฐ

 

๋“œ๋ผ์ด๋น™ ํ…Œ์ด๋ธ”, ๋“œ๋ฆฌ๋ธ ํ…Œ์ด๋ธ”

SELECT ํ•™์ƒ.ํ•™๋ฒˆ, ํ•™์ƒ.์ด๋ฆ„, ๋น„์ƒ์—ฐ๋ฝ๋ง.๊ด€๊ณ„, ๋น„์ƒ์—ฐ๋ฝ๋ง.์—ฐ๋ฝ์ฒ˜
FROM ํ•™์ƒ
JOIN ๋น„์ƒ์—ฐ๋ฝ๋ง ON ํ•™์ƒ.ํ•™๋ฒˆ = ๋น„์ƒ์—ฐ๋ฝ๋ง.ํ•™๋ฒˆ
WHERE ํ•™์ƒ.ํ•™๋ฒˆ IN (1, 100)
  • ๋“œ๋ผ์ด๋น™ ํ…Œ์ด๋ธ”: ๋จผ์ € ์ ‘๊ทผํ•˜๋Š” ํ…Œ์ด๋ธ” (ํ•™์ƒ)
  • ๋“œ๋ฆฌ๋ธ ํ…Œ์ด๋ธ”: ํ›„ํ–‰์œผ๋กœ ์ ‘๊ทผํ•˜๋Š” ํ…Œ์ด๋ธ” (๋น„์ƒ์—ฐ๋ฝ๋ง)
  • ๋“œ๋ผ์ด๋น™ ํ…Œ์ด๋ธ” -> ๊ฐ€๋Šฅํ•œ ์ ์€ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐ˜ํ™˜๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜๋Š” ํ…Œ์ด๋ธ”

 

๊ฐœ๋…์ ์ธ ํŠœ๋‹ ์šฉ์–ด

  • ์˜ค๋ธŒ์ ํŠธ ์Šค์บ” ์œ ํ˜• -> ํ…Œ์ด๋ธ” ์Šค์บ”๊ณผ ์ธ๋ฑ์Šค ์Šค์บ”์œผ๋กœ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.
  • ํ…Œ์ด๋ธ” ์Šค์บ”: ์ธ๋ฑ์Šค๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ๋””์Šคํฌ์— ์œ„์น˜ํ•œ ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๋Š” ์œ ํ˜•
  • ์ธ๋ฑ์Šค ์Šค์บ”: ์ธ๋ฑ์Šค๋กœ ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ๋ฅผ ์ ‘๊ทผํ•˜๋Š” ์œ ํ˜•

ํ…Œ์ด๋ธ” ํ’€ ์Šค์บ” (table full scan)

  • ์ธ๋ฑ์Šค๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ํ…Œ์ด๋ธ”๋กœ ๋ฐ”๋กœ ์ ‘๊ทผํ•˜์—ฌ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ํ›‘์–ด๋ณด๋Š” ๋ฐฉ์‹
  • WHERE ์ ˆ์˜ ์กฐ๊ฑด๋ฌธ์„ ๊ธฐ์ค€์œผ๋กœ ํ™œ์šฉํ•  ์ธ๋ฑ์Šค๊ฐ€ ์—†๊ฑฐ๋‚˜, ์ „์ฒด ๋ฐ์ดํ„ฐ ๋Œ€๋น„ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•  ๋•Œ, ์ธ๋ฑ์Šค ํ™œ์šฉ๋ณด๋‹ค ํ…Œ์ด๋ธ” ํ’€ ์Šค์บ”์ด ํšจ์œจ์ ์ด๋ผ๊ณ  ํŒ๋‹จํ•  ๋•Œ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ธ๋ฑ์Šค ๋ฒ”์œ„ ์Šค์บ” (index range scan)

  • ์ธ๋ฑ์Šค๋ฅผ ๋ฒ”์œ„(range) ๊ธฐ์ค€์œผ๋กœ ์Šค์บ”ํ•œ ๋’ค ์Šค์บ” ๊ฒฐ๊ณผ๋ฅผ ํ† ๋Œ€๋กœ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๋Š” ๋ฐฉ์‹
  • ex) BETWEEN, AND, <, >, LIKE ๊ตฌ๋ฌธ ๋“ฑ์— ํ™œ์šฉ
  • ์ข์€ ๋ฒ”์œ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์Šค์บ”ํ•  ๋•Œ๋Š” ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ์œผ๋‚˜, ๋„“์€ ๋ฒ”์œ„ ์Šค์บ” ์‹œ ๋น„ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ธ๋ฑ์Šค ํ’€ ์Šค์บ” (index full scan)

  • ์ธ๋ฑ์Šค๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ์‹
  • ํ…Œ์ด๋ธ”์— ์ ‘๊ทผํ•˜์ง€ ์•Š๊ณ , ์ธ๋ฑ์Šค๋กœ ๊ตฌ์„ฑ๋œ ์—ด ์ •๋ณด๋งŒ ์š”๊ตฌํ•˜๋Š” SQL ๋ฌธ์—์„œ ์ธ๋ฑ์Šค ํ’€ ์Šค์บ”์ด ์ˆ˜ํ–‰
  • ์ธ๋ฑ์Šค๋Š” ํ…Œ์ด๋ธ”๋ณด๋‹ค ์ƒ๋Œ€์ ์œผ๋กœ ์ ์€ ์–‘์„ ์ฐจ์ง€ํ•˜๋ฏ€๋กœ ํ…Œ์ด๋ธ” ํ’€ ์Šค์บ”๋ณด๋‹ค๋Š” ์„ฑ๋Šฅ์ƒ ์œ ๋ฆฌ
  • ํ•˜์ง€๋งŒ, ์ธ๋ฑ์Šค๋ผ๋Š” ์˜ค๋ธŒ์ ํŠธ์˜ ์ „ ์˜์—ญ์„ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ์‹์ธ ๋งŒํผ ๊ฒ€์ƒ‰ ๋ฒ”์œ„๋ฅผ ์ตœ๋Œ€ํ•œ ์ค„์ด๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ํŠœ๋‹

์ธ๋ฑ์Šค ๊ณ ์œ  ์Šค์บ” (index unique scan)

  • ๊ธฐ๋ณธ ํ‚ค๋‚˜ ๊ณ ์œ  ์ธ๋ฑ์Šค๋กœ ํ…Œ์ด๋ธ”์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ, ์ธ๋ฑ์Šค ์‚ฌ์šฉ ์Šค์บ” ๋ฐฉ์‹ ์ค‘ ๊ฐ€์žฅ ํšจ์œจ์ ์ธ ๋ฐฉ์‹
  • WHERE ์ ˆ์— = ์กฐ๊ฑด๋ฌธ์œผ๋กœ ์ž‘์„ฑํ•˜๋ฉฐ, ํ•ด๋‹น ์—ด์ด PK๋‚˜ unique index์˜ ์„ ๋‘ ์—ด๋กœ ์„ ์ •๋˜์—ˆ์„ ๋•Œ ํ™œ์šฉ

์ตœ์†Œํ•œ์˜ ํŽ˜์ด์ง€(๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰ ์ตœ์†Œ ๋‹จ์œ„) ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ์ ‘๊ทผ ๋ฒ”์œ„๋ฅผ ์ค„์ด๊ณ , ํšจ์œจ์ ์ธ ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํŠœ๋‹

 

์นด๋””๋„๋ฆฌํ‹ฐ (cardinality)

  • 'ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ ์œ ํ˜•์œผ๋กœ ์ •์˜๋˜๋Š” ๋ฐ์ดํ„ฐ ํ–‰์˜ ๊ฐฏ์ˆ˜'
  • ์ „์ฒด ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•œ ๋’ค ์ถœ๋ ฅ๋  ๊ฒƒ์ด๋ผ ์˜ˆ์ƒ๋˜๋Š” ๋ฐ์ดํ„ฐ ๊ฑด์ˆ˜
  • ์ „์ฒด ํ–‰์— ๋Œ€ํ•œ ํŠน์ • ์—ด์˜ ์ค‘๋ณต ์ˆ˜์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ง€ํ‘œ
  • ex) ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ -> unique, ์นด๋””๋„๋ฆฌํ‹ฐ๊ฐ€ ๋†’๋‹ค.
  • ex) ์„ฑ๋ณ„ -> M/W, ์นด๋””๋„๋ฆฌํ‹ฐ๊ฐ€ ๋‚ฎ๋‹ค.

์ฝœ๋ ˆ์ด์…˜ (collation)

  • ํŠน์ • ๋ฌธ์ž์…‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋œ ๊ฐ’์„ ๋น„๊ตํ•˜๊ฑฐ๋‚˜ ์ •๋ ฌํ•˜๋Š” ์ž‘์—…์˜ ๊ทœ์น™ (utf8_bin, utf_8_general_ci)
  • ์บ๋ฆญํ„ฐ์…‹ (charset): ๋ฐ์ดํ„ฐ ์ €์žฅ์„ ์–ด๋–ป๊ฒŒ ํ•  ๊ฒƒ์ธ๊ฐ€?
  • ์ฝœ๋ ˆ์ด์…˜ (collation): ๋ฐ์ดํ„ฐ ์ •๋ ฌ์„ ์–ด๋–ป๊ฒŒ ํ•  ๊ฒƒ์ธ๊ฐ€?

 

2. SQL ํŠœ๋‹์˜ ์‹คํ–‰ ๊ณ„ํš ํŒŒํ—ค์น˜๊ธฐ

์•„๋ž˜ ์‹คํ–‰ ๊ณ„ํš์€ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ƒ์„ธํ•œ ๋‚ด์šฉ์— ๋Œ€ํ•ด ํ•™์Šตํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์•„๋ž˜ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”:

https://zzang9ha.tistory.com/436

 

MySQL EXPLAIN ์‹คํ–‰๊ณ„ํš ๋งˆ์Šคํ„ฐํ•˜๊ธฐ(feat. RealMySQL 8.0)

๐Ÿ’ฏ MySQL EXPLAIN ์‹คํ–‰๊ณ„ํš ๋งˆ์Šคํ„ฐํ•˜๊ธฐ(feat. RealMySQL 8.0) ์‹คํ–‰ ๊ณ„ํš(EXPLAIN) ์ด๋ž€? ๋Œ€๋ถ€๋ถ„์˜ DBMS๋Š” ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ „ํ•˜๊ณ , ๋น ๋ฅด๊ฒŒ ์ €์žฅ ๋ฐ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ฃผ๋ชฉ์ ์ด๋‹ค. ์ด๋Ÿฌํ•œ ๋ชฉ์ ์„ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ

zzang9ha.tistory.com

 

 

id

  • SQL ๋ฌธ์ด ์ˆ˜ํ–‰๋˜๋Š” ์‹คํ–‰ ์ˆœ์„œ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ์ˆซ์ž
  • ์กฐ์ธํ•  ๋•Œ๋Š” ๋™์ผํ•œ id

select_type

  • SQL ๋ฌธ์„ ๊ตฌ์„ฑํ•˜๋Š” SELECT ๋ฌธ์˜ ์œ ํ˜•์„ ์ถœ๋ ฅํ•˜๋Š” ํ•ญ๋ชฉ
  • SIMPLE, PRIMARY, SUBQUERY, DERIVED, UNION, MATERIALIZED ...

table

  • ํ…Œ์ด๋ธ”๋ช… ํ‘œ์‹œ, ์„œ๋ธŒ์ฟผ๋ฆฌ๋‚˜ ์ž„์‹œ ํ…Œ์ด๋ธ” ์‹œ <subquery#>, <derived#> ๋ผ๊ณ  ์ถœ๋ ฅ

partitions

  • ์‹คํ–‰ ๊ณ„ํš์˜ ๋ถ€๊ฐ€ ์ •๋ณด, ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ ๋…ผ๋ฆฌ์ ์ธ ์˜์—ญ
  • ๋„ˆ๋ฌด ๋งŽ์€ ์˜์—ญ์˜ ํŒŒํ‹ฐ์…˜์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ถœ๋ ฅ๋œ๋‹ค๋ฉด ํŒŒํ‹ฐ์…˜ ์ •์˜๋ฅผ ํŠœ๋‹

type

  • ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์ฐพ์„์ง€์— ๊ด€ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ํ•ญ๋ชฉ
  • system, const, eq_ref, ref, range, index, ALL ...

possible_keys

  • ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ SQL ๋ฌธ์„ ์ตœ์ ํ™”ํ•˜๊ณ ์ž ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ธ๋ฑ์Šค ๋ชฉ๋ก (์‹ค์ œ๋กœ๋Š” ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Œ)

keys

  • ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ SQL ๋ฌธ์„ ์ตœ์ ํ™”ํ•˜๊ณ ์ž ์‚ฌ์šฉํ•œ ๊ธฐ๋ณธ ํ‚ค(PK) ๋˜๋Š” ์ธ๋ฑ์Šค๋ช…
  • ๋น„ํšจ์œจ์ ์ธ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ–ˆ๊ฑฐ๋‚˜, ์ธ๋ฑ์Šค ์ž์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด SQL ํŠœ๋‹ ๋Œ€์ƒ

key_len

  • ์‚ฌ์šฉํ•œ ์ธ๋ฑ์Šค์˜ ๋ฐ”์ดํŠธ ์ˆ˜

ref

  • ํ…Œ์ด๋ธ” ์กฐ์ธ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ์–ด๋–ค ์กฐ๊ฑด์œผ๋กœ ํ•ด๋‹น ํ…Œ์ด๋ธ”์— ์•ก์„ธ์Šค ๋˜์—ˆ๋Š”์ง€๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ์ •๋ณด

rows

  • SQL ๋ฌธ์„ ์ˆ˜ํ–‰ํ•˜๊ณ ์ž ์ ‘๊ทผํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ๋ชจ๋“  ํ–‰(row) ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์˜ˆ์ธก ํ•ญ๋ชฉ
  • ๋””์Šคํฌ์—์„œ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์„ ์ฝ๊ณ  ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ํ–‰ ์ˆ˜๋ฅผ ์˜ˆ์ƒํ•˜๋Š” ๊ฐ’ (์ •ํ™•ํ•˜์ง„ ์•Š์Œ)
  • SQL ๋ฌธ์˜ ์ตœ์ข… ๊ฒฐ๊ณผ ๊ฑด์ˆ˜ ๋Œ€๋น„ rows์™€ ์ฐจ์ด๊ฐ€ ํด ๊ฒฝ์šฐ, ๋ถˆํ•„์š”ํ•˜๊ฒŒ MySQL ์—”์ง„๊นŒ์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŽ์ด ๊ฐ€์ ธ์™”๋‹ค๋Š” ๋œป์ด๋ฏ€๋กœ SQL ํŠœ๋‹์˜ ๋Œ€์ƒ

filtered

  • SQL ๋ฌธ์„ ํ†ตํ•ด DB ์—”์ง„์œผ๋กœ ๊ฐ€์ ธ์˜จ ๋ฐ์ดํ„ฐ ๋Œ€์ƒ์œผ๋กœ ํ•„ํ„ฐ ์กฐ๊ฑด์— ๋”ฐ๋ผ ์–ด๋Š ์ •๋„์˜ ๋น„์œจ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ฑฐํ–ˆ๋Š”์ง€๋ฅผ ์˜๋ฏธํ•˜๋Š” ํ•ญ๋ชฉ
  • DB ์—”์ง„์œผ๋กœ 100๊ฑด์˜ ๋ฐ์ดํ„ฐ ์กฐํšŒ, ์ดํ›„ WHERE ์ ˆ์œผ๋กœ 10๊ฑด ํ•„ํ„ฐ๋ง ๋˜์—ˆ๋‹ค๋ฉด, ๊ฐ’์€ 10(%)

extra

  • SQL ๋ฌธ์„ ์–ด๋–ป๊ฒŒ ์ˆ˜ํ–‰ํ•  ๊ฒƒ์ธ์ง€์— ๊ด€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ํ•ญ๋ชฉ
  • Distinct, Using where, Using temporary, Using index, ...

 

์ด์ƒ์œผ๋กœ ํŠœ๋‹์— ํ•„์š”ํ•œ ์šฉ์–ด์™€ ์‹คํ–‰ ๊ณ„ํš๋“ค์„ ๊ฐ„๋žตํžˆ ์‚ดํŽด๋ณด์•˜๊ณ , ๋‚ด์šฉ์ด ๊ธธ์–ด์ ธ ์ดํ›„ ํฌ์ŠคํŒ…์—์„œ ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋‹ค์–‘ํ•œ ์ฟผ๋ฆฌ์˜ ๋ฌธ์ œ์ ๋“ค์— ๋Œ€ํ•ด ํŠœ๋‹ํ•˜๋ฉฐ ๊ฐœ์„ ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€