Search
Duplicate
โŒจ๏ธ

์‹คํ–‰ ๊ณ„ํš ์ปฌ๋Ÿผ ์ •๋ณด

select_type
โ€ข
select ๋ฌธ์˜ ์œ ํ˜•
โ€ข
SIMPLE : ๋‹จ์ˆœ select๋ฌธ
โ€ข
PRIMARY : ์ฒซ๋ฒˆ์งธ ์ฟผ๋ฆฌ
โ€ข
DERIVED : select๋ฌธ์œผ๋กœ ์ถ”์ถœ๋œ ํ…Œ์ด๋ธ” ( from ์ ˆ์—์„œ์˜ ์„œ๋ธŒ์ฟผ๋ฆฌ ๋˜๋Š” inline view)
โ€ข
SUBQUERY : sub query ์ค‘ ์ฒซ๋ฒˆ์งธ select๋ฌธ
โ€ข
UNION : UNION์ฟผ๋ฆฌ์—์„œ PRIMARY๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ select๋ฌธ
โ€ข
DEPENDENT SUBQUERY
โ€ข
DEPENDENT UNION
type
system
ํ…Œ์ด๋ธ”์— ๋‹จ ํ•œ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋งŒ ์žˆ๋Š” ๊ฒฝ์šฐ
const
SELECT์—์„œ Primary Key ํ˜น์€ Unique Key๋ฅผ ์‚ด์ˆ˜๋กœ ์กฐํšŒํ•˜๋Š” ๊ฒฝ์šฐ๋กœ ๋งŽ์•„์•ผ ํ•œ ๊ฑด์˜ ๋ฐ์ดํ„ฐ๋งŒ ์žˆ์Œ
eq_ref
์กฐ์ธ์„ ํ•  ๋•Œ Primary Key
ref
์กฐ์ธ์„ ํ•  ๋•Œ Primary Key ํ˜น์€ Unique Key๊ฐ€ ์•„๋‹Œ Key๋กœ ๋งค์นญํ•˜๋Š” ๊ฒฝ์šฐ
ref_or_null
ref ์™€ ๊ฐ™์ง€๋งŒ null ์ด ์ถ”๊ฐ€๋˜์–ด ๊ฒ€์ƒ‰๋˜๋Š” ๊ฒฝ์šฐ
index_merge
๋‘ ๊ฐœ์˜ ์ธ๋ฑ์Šค๊ฐ€ ๋ณ‘ํ•ฉ๋˜์–ด ๊ฒ€์ƒ‰์ด ์ด๋ฃจ์–ด์ง€๋Š” ๊ฒฝ์šฐ
unique_subquery
๋‹ค์Œ๊ณผ ๊ฐ™์ด IN ์ ˆ ์•ˆ์˜ ์„œ๋ธŒ์ฟผ๋ฆฌ์—์„œ Primary Key๊ฐ€ ์˜ค๋Š” ํŠน์ˆ˜ํ•œ ๊ฒฝ์šฐSELECT *FROM tab01WHERE col01 IN (SELECT Primary Key FROM tab01);
index_subquery
unique_subquery์™€ ๋น„์Šทํ•˜๋‚˜ Primary Key๊ฐ€ ์•„๋‹Œ ์ธ๋ฑ์Šค์ธ ๊ฒฝ์šฐSELECT *FROM tab01WHERE col01 IN (SELECT key01 FROM tab02);
range
ํŠน์ • ๋ฒ”์œ„ ๋‚ด์—์„œ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๋Š” ๊ฒฝ์šฐ๋กœ, ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐฉ๋Œ€ํ•˜์ง€ ์•Š๋‹ค๋ฉด ๋‹จ์ˆœ SELECT ์—์„œ๋Š” ๋‚˜์˜์ง€ ์•Š์Œ
index
์ธ๋ฑ์Šค๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์ฐพ์•„์„œ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒฝ์šฐ๋กœ, ์ผ๋ฐ˜์ ์œผ๋กœ ์ธ๋ฑ์Šค ํ’€์Šค์บ”์ด๋ผ๊ณ  ํ•จ
all
ํ…Œ์ด๋ธ”์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒฝ์šฐ๋กœ, ์ผ๋ฐ˜์ ์œผ๋กœ ํ…Œ์ด๋ธ” ํ’€์Šค์บ”์ด๋ผ๊ณ  ํ•จ
possible_keys
โ€ข
ํ•ด๋‹น ํ…Œ์ด๋ธ”์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๊ธฐ์œ„ํ•ด ์„ ํƒํ•œ ์ธ๋ฑ์Šค ๋ชฉ๋ก
key
โ€ข
์‹ค์ œ๋กœ ์ฟผ๋ฆฌ ์‹คํ–‰์— ์‚ฌ์šฉํ•œ ์ธ๋ฑ์Šค
key_len
โ€ข
์‚ฌ์šฉํ•  ์ธ๋ฑ์Šค์˜ ๊ธธ์ด
โ€ข
MySQL์ด ์ธ๋ฑ์Šค์— ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๋ฐ”์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์ง€๋ฅผ ๋ณด์—ฌ์ค€๋‹ค. MySQL์—์„œ ์ธ๋ฑ์Šค์— ์žˆ๋Š” ์ปฌ๋Ÿผ๋“ค ์ค‘ ์ผ๋ถ€๋งŒ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ด ๊ฐ’์„ ํ†ตํ•ด ์–ด๋–ค ์ปฌ๋Ÿผ๋“ค์ด ์‚ฌ์šฉ๋˜๋Š” ์ง€๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋‹ค.
Extra
โ€ข
์ฟผ๋ฆฌ์— ๊ด€ํ•œ ์ถ”๊ฐ€์ ์ธ ์ •๋ณด
โ€ข
distinct : ์ด๋ฏธ ์ฒ˜๋ฆฌํ•œ ๊ฐ’๊ณผ ๋™์ผํ•œ ๊ฐ’์„ ๊ฐ€์ง„ Row๋Š” ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์Œ.
โ€ข
not exist : left join์„ ์ˆ˜ํ–‰ํ•จ์— ๋งค์น˜๋˜๋Š” ํ•œ ํ–‰์„ ์ฐพ์œผ๋ฉด ๋” ์ด์ƒ ๋งค์น˜๋˜๋Š” ํ–‰์„ ๊ฒ€์ƒ‰ํ•˜์ง€ ์•Š์Œ.
โ€ข
Range checked for each record :์‚ฌ์šฉํ•  ์ข‹์€ ์ธ๋ฑ์Šค๊ฐ€ ์—†์Œ.
โ€ข
using filesort : ์ •๋ ฌ์„ ์œ„ํ•ด ์ถ”๊ฐ€์ ์ธ ๊ณผ์ •์„ ํ•„์š”๋กœ ํ•จ(๋ฌผ๋ฆฌ์ ์ธ ์ •๋ ฌ์ž‘์—… ์ˆ˜ํ–‰)
โ€ข
using index : ์‹ค์ œ ๋ฐ์ดํ„ฐ Block์„ ์ฝ์ง€ ์•Š๊ณ  ์ธ๋ฑ์Šค Block ๋งŒ์œผ๋กœ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ
โ€ข
using temporary : ์ž„์‹œ ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉ. order by ๋‚˜ group by ์ ˆ์ด ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์ปฌ๋Ÿผ์„ ์‚ฌ์šฉํ•  ๋•Œ ๋ฐœ์ƒ
โ€ข
using where : where์ ˆ์ด ๋‹ค์Œ ์กฐ์ธ์— ์‚ฌ์šฉ๋  ํ–‰์ด๋‚˜ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋Œ๋ ค์งˆ ํ–‰์„ ์ œํ•œํ•˜๋Š” ๊ฒฝ์šฐ
โ€ข
using index for group-by
โ†’ ์ฟผ๋ฆฌ๋ฅผ ๊ฐ€๋Šฅํ•œ ํ•œ ๋น ๋ฅด๊ฒŒ ํ•˜๋ ค๋ฉด, Extra ๊ฐ’์˜ Using filesort๋‚˜ Using temporary์— ์ฃผ์˜ํ•ด์•ผ ํ•จ.
โ†’ EXPLAIN์˜ ์ถœ๋ ฅ ๋‚ด์šฉ ์ค‘ rows ์ปฌ๋Ÿผ๊ฐ’๋“ค์„ ๊ณฑํ•ด๋ด„์œผ๋กœ์จ ์–ผ๋งˆ๋‚˜ ํšจ๊ณผ์ ์ธ join์„ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค.