Mysql explain

Explain

์ฟผ๋ฆฌ ์•ž์— explain์„ ์ถ”๊ฐ€ํ•˜๋ฉด SQL๋ฌธ์— ๋Œ€ํ•ด์„œ ์–ด๋–ป๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•œ ๊ณ„ํš, ๊ฒฝ๋กœ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

explain์˜ ๊ฒฐ๊ณผ๋Š” MySQL์—์„œ ์‹คํ–‰๋œ ์ฟผ๋ฆฌ์˜ ์‹คํ–‰ ๊ณ„ํš์„ ๋ณด์—ฌ์ค€๋‹ค.

๊ฒฐ๊ณผ์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ์ปฌ๋Ÿผ์ด ํฌํ•จ๋˜์–ด ์žˆ๋‹ค.

  1. id

    • id๋Š” ์ฟผ๋ฆฌ์˜ ์‹คํ–‰ ์ˆœ์„œ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. id ๊ฐ’์ด ๋‚ฎ์„์ˆ˜๋ก ๋จผ์ € ์‹คํ–‰๋˜๊ณ , ๊ฐ’์ด ๋†’์„์ˆ˜๋ก ๋‚˜์ค‘์— ์‹คํ–‰๋œ๋‹ค.

  2. select_type

    • ์–ด๋–ค ์ข…๋ฅ˜์˜ SELECT ๋ฌธ์ธ์ง€ ๋‚˜ํƒ€๋‚ธ๋‹ค.

    1. SIMPLE : ์„œ๋ธŒ์ฟผ๋ฆฌ, UNION์ด ํฌํ•จ๋˜์ง€ ์•Š์€ ๋‹จ์ˆœํ•œ SELECT ๋ฌธ์ด๋‹ค.

    2. PRIMARY : ์ตœ์ƒ์œ„ SELECT ๋ฌธ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ฃผ๋กœ ์„œ๋ธŒ์ฟผ๋ฆฌ๋‚˜ UNION์ด ํฌํ•จ๋œ ์ฟผ๋ฆฌ์—์„œ ์ด๋“ค์„ ๊ฐ์‹ธ๋Š” ์™ธ๋ถ€ ์ฟผ๋ฆฌ์ด๋ฉฐ, ์ตœ์ƒ์œ„ ๋ ˆ๋ฒจ์˜ ์ฟผ๋ฆฌ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

    3. SUBQUERY : ๋…๋ฆฝ์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์™ธ๋ถ€ SELECT ๋ฌธ์˜ ์ปจํ…์ŠคํŠธ ๋‚ด์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํ•„ํ„ฐ๋งํ•˜๊ฑฐ๋‚˜ ์ง‘๊ณ„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์Šค์นผ๋ผ ์„œ๋ธŒ์ฟผ๋ฆฌ์™€ WHERE ์ ˆ์˜ ์ค‘์ฒฉ ์„œ๋ธŒ์ฟผ๋ฆฌ์ผ ๊ฒฝ์šฐ ํ‘œ์‹œ๋œ๋‹ค.

    4. DERIVED : MySQL์—์„œ ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ๋ฅผ ์ผ์‹œ์ ์ธ ํŒŒ์ƒ ํ…Œ์ด๋ธ”๋กœ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํƒ€์ž…์ด๋‹ค. ํŒŒ์ƒ ํ…Œ์ด๋ธ”์€ ์„œ๋ธŒ์ฟผ๋ฆฌ ๋˜๋Š” UNION์˜ ์ž‘์—… ๊ฒฐ๊ณผ๋กœ ์ƒ์„ฑ๋œ ์ž„์‹œ ํ…Œ์ด๋ธ”์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ฆ‰, FROM ์ ˆ์— ์„œ๋ธŒ์ฟผ๋ฆฌ๊ฐ€ ํฌํ•จ๋œ ๊ฒฝ์šฐ๋„ ํ•ด๋‹นํ•œ๋‹ค.

    5. UNION : ๋‘ ์ฟผ๋ฆฌ๋ฅผ UNION ์—ฐ์‚ฐํ•  ๋•Œ, ๋‘ ๋ฒˆ์งธ SELECT ๋ฌธ์ด ํ•ด๋‹นํ•˜๊ฒŒ ๋œ๋‹ค.

    6. UNION RESULT : UNION ์—ฐ์‚ฐ์˜ ์ตœ์ข… ๊ฒฐ๊ณผ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ€์ƒ์˜ ํ…Œ์ด๋ธ”์„ ์˜๋ฏธํ•œ๋‹ค. ์ฆ‰, ๋‘ SELECT ๋ฌธ์„ ์กฐํ•ฉํ•œ ๊ฒฐ๊ณผ์ž„์„ ์˜๋ฏธํ•œ๋‹ค.

    7. DEPENDENT SUBQUERY : ์ƒ์œ„(์™ธ๋ถ€) ์ฟผ๋ฆฌ์˜ ์—ด์— ์˜์กดํ•˜๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ์ด๋‹ค. ์„œ๋ธŒ์ฟผ๋ฆฌ๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰๋˜์ง€ ๋ชปํ•˜๊ณ  where๊ณผ ๊ฐ™์€ ์™ธ๋ถ€ ํ…Œ์ด๋ธ”๋กœ๋ถ€ํ„ฐ ์˜ํ–ฅ์„ ๋ฐ›๋Š”๋‹ค. โ†’ ์„ฑ๋Šฅ์ ์œผ๋กœ ๋ถˆ๋ฆฌํ•œ SQL๋ฌธ์ด๋ผ๊ณ  ํ•œ๋‹ค.

    ์—ฌ๊ธฐ ์ž‘์„ฑ๋œ ๊ฒƒ ๋ง๊ณ ๋„ ๋” ๋งŽ์€ ํƒ€์ž…๋“ค์ด ์กด์žฌํ•œ๋‹ค.

  3. table

    • ํ˜„์žฌ ์‹คํ–‰์ด ์ฐธ์กฐํ•˜๋Š” table์˜ ์ด๋ฆ„์ด๋‚˜ as๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์„œ๋ธŒ์ฟผ๋ฆฌ๋‚˜ ํŒŒ์ƒ ํ…Œ์ด๋ธ”์„ ์ฐธ์กฐํ•  ๊ฒฝ์šฐ <subquery#>, <derived#>์„ ์‚ฌ์šฉํ•œ๋‹ค.

    • EXPLAIN SELECT * FROM ( SELECT id, name FROM users ) AS derived_table; ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ ํ•  ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.

  4. partitions

    • ์ฟผ๋ฆฌ์— ์ ‘๊ทผํ•˜๋Š” ํŒŒํ‹ฐ์…˜์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

  5. type

    • ํ…Œ์ด๋ธ”์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ฟผ๋ฆฌ ์„ฑ๋Šฅ์„ ๋ถ„์„ํ•˜๊ณ  ์ตœ์ ํ™” ํ•˜๋Š”๋ฐ ์ค‘์š”ํ•œ ์ •๋ณด์ด๋ฉฐ, system, const, eq_ref, ref, range, index ALL ์ˆœ์„œ๋กœ ์„ฑ๋Šฅ์ด ์ข‹๋‹ค.

    ์ ‘๊ทผ ์œ ํ˜•

    1. system : ๋‹จ ํ•˜๋‚˜์˜ ํ–‰๋งŒ ์žˆ๋Š” ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๊ฐ€์žฅ ๋น ๋ฅธ ์ ‘๊ทผ ๋ฐฉ๋ฒ•์ด๋ฉฐ, ํ–‰์ด ํ•˜๋‚˜๋ฟ์ธ ํ…Œ์ด๋ธ”์—์„œ SELECT๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ์— ๋‚˜ํƒ€๋‚œ๋‹ค.

    1. const : ์ƒ์ˆ˜์ฒ˜๋Ÿผ ์ทจ๊ธ‰๋˜๋Š” ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ PK๋‚˜ ์œ ๋‹ˆํฌ ์ธ๋ฑ์Šค์— ์ •ํ™•ํ•œ ๊ฐ’์„ ์กฐํšŒํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค. ์ฆ‰, ์ธ๋ฑ์Šค๋‚˜ PK๋ฅผ ์‚ฌ์šฉํ•ด์„œ 1๊ฑด์˜ ๋ฐ์ดํ„ฐ๋งŒ ์–ป์€ ๊ฒฝ์šฐ ํ‘œ์‹œ๋œ๋‹ค. ex) select * from users where id = 1;

    1. eq_ref : Join์—์„œ PK๋‚˜ ์œ ๋‹ˆํฌ index๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •ํ™•ํžˆ ํ•˜๋‚˜์˜ ํ–‰์„ ์กฐํšŒํ•  ๋•Œ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์กฐ์ธ ์‹œ, ๋“œ๋ผ์ด๋น™ ํ…Œ์ด๋ธ”์ด ๋“œ๋ฆฌ๋ธ ํ…Œ์ด๋ธ”์— ์ ‘๊ทผํ•ด์„œ PK๋‚˜ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 1๊ฑด์˜ ๋ฐ์ดํ„ธ ์–ป๋Š” ๊ฒฝ์šฐ ํ‘œ์‹œ๋œ๋‹ค. ex) select * from orders join customers on orders.customer_id = customers.idarrow-up-right; (์—ฌ๊ธฐ์„œ customers.id๊ฐ€ PK์ผ ๋•Œ)

    1. ref : non-clusterd index ๋˜๋Š” ์™ธ๋ž˜ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ํ–‰์„ ์กฐํšŒํ•  ๋•Œ ๋‚˜ํƒ€๋‚ธ๋‹ค. โ†’ ์ธ๋ฑ์Šค ํ˜น์€ ์™ธ๋ž˜ ํ‚ค๊ฐ€ ์„ค์ •๋œ ์ปฌ๋Ÿผ์„ where ์กฐ๊ฑด์ ˆ์— ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ํ–‰์„ ์กฐํšŒํ•  ๋•Œ ํ‘œํ˜„ ex) select * from ์Œ์‹ where type = โ€˜๊ณผ์ผโ€™ (์—ฌ๊ธฐ์„œ type์€ index)

    1. range : ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฒ”์œ„ ๊ฒ€์ƒ‰์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค. BETWEENT, >, <, โ‰ฅ, โ‰ค ๋“ฑ์˜ ์กฐ๊ฑด์„ ์‚ฌ์šฉํ•  ๋–„ ํ‘œํ˜„ํ•œ๋‹ค. (์ธ๋ฑ์Šค๊ฐ€ ์ƒ์„ฑ๋˜์ง€ ์•Š์€ ์ปฌ๋Ÿผ์œผ๋กœ ์กฐํšŒํ•  ๋•Œ, range๋กœ ํ‘œํ˜„๋˜์ง€ ์•Š์Œ)

    1. index : ์ธ๋ฑ์Šค ์ „์ฒด๋ฅผ ์Šค์บ”ํ•  ๋•Œ ํ‘œํ˜„ํ•œ๋‹ค. ์ธ๋ฑ์Šค ์ „์ฒด ์Šค์บ”์€ ํ…Œ์ด๋ธ” ์ „์ฒด ์Šค์บ”๋ณด๋‹ค ๋น ๋ฅด์ง€๋งŒ ์—ฌ์ „ํžˆ ๋งŽ์€ ํ–‰์„ ์ฝ์–ด์•ผ ํ•œ๋‹ค.

    1. ALL : ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด์„œ ์ „์ฒด ์Šค์บ” ํ•  ๊ฒฝ์šฐ ํ‘œํ˜„ํ•œ๋‹ค. ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์„ ๋•Œ ์ผ๋ฐ˜์ ์œผ๋กœ ์„ฑ๋Šฅ์ด ๊ฐ€์žฅ ์ข‹์ง€ ์•Š์€ ๋ฐฉ๋ฒ•์ด๋‹ค.

  6. possible_keys

    • ์ฟผ๋ฆฌ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ธ๋ฑ์Šค ๋ชฉ๋ก์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

    • <auto_key0>๋Š” MySQL์ด ๋‚ด๋ถ€์ ์œผ๋กœ ์ž๋™ ์ƒ์„ฑํ•œ ์ž„์‹œ ์ธ๋ฑ์Šค๋ฅผ ํƒ€๋‚˜๋‚ธ๋‹ค.

  7. key

    • ์‹ค์ œ๋กœ ์‚ฌ์šฉ๋œ ์ธ๋ฑ์Šค๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

    • possible_key๋Š” ์ฟผ๋ฆฌ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ธ๋ฑ์Šค๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ , key๋Š” ์‹ค์ œ ์‚ฌ์šฉ๋œ ์ธ๋ฑ์Šค๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ ๋•Œ๋ฌธ์— possible_key๊ฐ€ null ์ด๋”๋ผ๋„, key๋Š” null์ด ์•„๋‹ ์ˆ˜ ์žˆ๋‹ค.

  8. key_len

    • ์‚ฌ์šฉ๋œ ์ธ๋ฑ์Šค์˜ ๊ธธ์ด๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ธ๋ฑ์Šค์˜ ํฌ๊ธฐ๋Š” byte ๋‹จ์œ„๋กœ ํ‘œํ˜„ํ•œ๋‹ค.

    • ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•œ ์ปฌ๋Ÿผ์˜ ์Šคํ‚ค๋งˆ๊ฐ€ varchar(50)์œผ๋กœ ์ •์˜ ๋˜์—ˆ๋‹ค๋ฉด 50 * 4 + ์˜ค๋ฒ„ํ—ค๋“œ = 202. ์ฆ‰, key_len = 202 ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

  9. ref

    • ์กฐ์ธ ์กฐ๊ฑด์— ์‚ฌ์šฉ๋œ ์ปฌ๋Ÿผ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

    • ์ง์ ‘์ ์œผ๋กœ ์กฐ์ธํ•˜์ง€ ์•Š๋”๋ผ๋„ ์„œ๋ธŒ ์ฟผ๋ฆฌ๊ฐ™์€ ๊ฒฝ์šฐ where ์กฐ๊ฑด์ ˆ์—์„œ ์™ธ๋ถ€ ํ…Œ์ด๋ธ”์„ ์ฐธ์กฐํ•˜๊ณ  ์žˆ์œผ๋ฉด ref์— ํ‘œํ˜„๋  ์ˆ˜ ์žˆ๋‹ค. (์„œ๋ธŒ ์ฟผ๋ฆฌ๊ฐ€ ์™ธ๋ถ€ ์ฟผ๋ฆฌ๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ํ‘œํ˜„ ๊ฐ€๋Šฅ)

  10. rows

    • ํ•ด๋‹น ๋‹จ๊ณ„์—์„œ MySQL์ด ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์˜ˆ์ƒ row๋ฅผ ํ‘œํ˜„ํ•œ๋‹ค. (ํ•ด๋‹น ์ฟผ๋ฆฌ๊ฐ€ ์ ‘๊ทผํ•˜๋Š” row)

  11. filtered

    • ์‹คํ–‰ ๋  SQL๋ฌธ์ด ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ โ†’ MySQL ์—”์ง„์„ ๊ฑฐ์น˜๋ฉด์„œ ์กฐ๊ฑด์— ๋Œ€ํ•ด์„œ ํ•„ํ„ฐ๋ง ๋œ ๋น„์œจ์„ ๋ฐฑ๋ถ„์œจ๋กœ ๋‚˜ํƒ€๋‚ธ๋‹ค.

    • ๋งŒ์•ฝ 1,000๊ฐœ์˜ row ์ค‘ 200๊ฐœ์˜ row๊ฐ€ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•œ๋‹ค๊ณ  ์˜ˆ์ƒ๋˜๋ฉด 20.00์œผ๋กœ ํ‘œํ˜„๋œ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ’์ด ๋†’๋‹ค๋ฉด ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ํ–‰์ด ๋งŽ์Œ์„ ์˜๋ฏธํ•œ๋‹ค.

    • ์ „์ฒด ์Šค์บ”์—์„œ ์ด ๊ฐ’์ด ๋‚ฎ๋‹ค๋ฉด where ์ ˆ์„ ๊ฐœ์„ ํ•˜์—ฌ ๋” ๋งŽ์€ ํ–‰์„ ํ•„ํ„ฐ๋ง ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ฑ๋Šฅ ๊ฐœ์„ ์„ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ๋‹ค.

  12. Extra

    • Extra๋Š” ์ฟผ๋ฆฌ ์‹คํ–‰์— ๋Œ€ํ•ด ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ์ด ์ •๋ณด๋Š” ์ตœ์ ํ™” ๋ฐ ์„ฑ๋Šฅ ๊ฐœ์„ ์— ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

    Extra ์„ธ๋ถ€ ์‚ฌํ•ญ (Using ~)

    1. where : ์ฟผ๋ฆฌ์—์„œ where ์ ˆ์ด ์‚ฌ์šฉ๋˜์—ˆ์Œ์„ ์˜๋ฏธํ•œ๋‹ค.

    1. index : ์ฟผ๋ฆฌ๊ฐ€ ์ธ๋ฑ์Šค๋งŒ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. (์ปค๋ฒ„๋ง ์ธ๋ฑ์Šค ๋ฐฉ์‹ ์ด๋ผ๊ณ ๋„ ํ•œ๋‹ค.)

    1. temporary : ์ฟผ๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋™์•ˆ ์ž„์‹œ ํ…Œ์ด๋ธ”์ด ์‚ฌ์šฉ๋จ์„ ์˜๋ฏธํ•œ๋‹ค. ์ž„์‹œ ํ…Œ์ด๋ธ”์€ ์ฟผ๋ฆฌ ์„ฑ๋Šฅ์„ ์ €ํ•˜์‹œํ‚ค๋Š” ์›์ธ์ด ๋  ์ˆ˜ ์žˆ๋‹ค. distinct, group by, order by ๊ตฌ๋ฌธ์ด ํฌํ•จ๋œ ๊ฒฝ์šฐ ํ‘œ์‹œํ•œ๋‹ค.

    1. filesort : ๊ฒฐ๊ณผ๋ฅผ ์ •๋ ฌํ•˜๊ธฐ ์œ„ํ•ด ์ •๋ ฌ์ด ์‚ฌ์šฉ๋˜์—ˆ์Œ์„ ์˜๋ฏธํ•œ๋‹ค. distinct, group by, order by, union ๊ตฌ๋ฌธ์ด ์‚ฌ์šฉ๋  ๋•Œ ํ‘œ์‹œ๋  ์ˆ˜ ์žˆ๋‹ค. order by๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋ฉด, orber by ์ฒ˜๋ฆฌ๊ฐ€ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•  ๋•Œ ํ‘œ์‹œ๋˜๊ณ , ์ฃ„ํšŒ๋œ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ ๋ฒ„ํผ์— ๋ณต์‚ฌํ•ด ํ€ต ์†ŒํŠธ ๋˜๋Š” ํž™ ์†ŒํŠธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•ด ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

    1. distinct : ์ค‘๋ณต์ด ์ œ๊ฑฐ๋˜์–ด ์œ ์ผํ•œ ๊ฐ’์„ ์ฐพ์€ ๊ฒฝ์šฐ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. distinct, union์„ ์‚ฌ์šฉํ•  ๋•Œ ํ‘œ์‹œ๋  ์ˆ˜ ์žˆ๋‹ค.

    1. index condition : ์กฐ๊ฑด์— ๋Œ€ํ•ด์„œ ์ธ๋ฑ์Šค ๋ ˆ๋ฒจ์—์„œ ๋จผ์ € ํ‰๊ฐ€ํ•˜๊ณ , ํ•ด๋‹น ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ฐ์ดํ„ฐ๋งŒ ์‹ค์ œ ํ…Œ์ด๋ธ”์—์„œ ์ฝ์–ด์˜ค๊ณ  ์žˆ์Œ์„ ์˜๋ฏธํ•œ๋‹ค. ์ด๊ฒƒ์€ MySQL์ด ํšจ์œจ์ ์œผ๋กœ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Œ์„ ์˜๋ฏธํ•  ์ˆ˜ ์žˆ๊ณ  ๋ณ„๋„์˜ ์„ฑ๋Šฅ ํŠœ๋‹์ด ํ•„์š”ํ•˜์ง€ ์•Š์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค.

    1. Backward index scan (Using X) : ์ด๋Š” MySQL์ด index๋ฅผ ์—ญ์ˆœ์œผ๋กœ ์Šค์บ”ํ•˜์—ฌ order by๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ์Œ์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ๋•Œ๋ฌธ์— ๋ณ„๋„์˜ ํŒŒ์ผ ์ •๋ ฌ(filesort)๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค.

Last updated