๋ฐ์ดํฐ๋ฒ ์ด์ค ์ต์ ํ ์ค ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ฌ ์์ฃผ ์กฐํ๋๋ ์ฟผ๋ฆฌ์ ์ฑ๋ฅ์ ๊ฐ์ ํฉ๋๋ค.
์ด๋ฒ ์ต์ ํ ์์
์์๋ seat
ํ
์ด๋ธ์ ๋์์ผ๋ก ์ธ๋ฑ์ค๋ฅผ ์ ์ฉํ์ฌ ์ฟผ๋ฆฌ ์๋ต ์๊ฐ์ ๋จ์ถ์์ผฐ์ต๋๋ค.
seat
ํ
์ด๋ธ์๋ ์ด 720,773๊ฐ์ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํฉ๋๋ค.seat
ํ
์ด๋ธ์์ ์์ฃผ ์คํ๋๋ ์ฟผ๋ฆฌ ์ ํ์ ํ์
ํฉ๋๋ค.
SELECT * FROM hhplus_study.seat WHERE status = 'RESERVED'
SELECT * FROM hhplus_study.seat WHERE reservation_id = 57
SELECT * FROM hhplus_study.seat WHERE schedule_id = 10
๊ฐ ์ฟผ๋ฆฌ์ ๋ํด EXPLAIN ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์คํ ๊ณํ์ ๋ถ์ํ์ต๋๋ค.
EXPLAIN ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด, ์ฟผ๋ฆฌ๊ฐ ํ ์ค์บ์ ์ํํ๊ณ ์์์ ์ ์ ์์ต๋๋ค.
ํ ์ค์บ์ ํ
์ด๋ธ์ ๋ชจ๋ ํ์ ์์ฐจ์ ์ผ๋ก ํ์ํ๋ ๋ฐฉ์์ผ๋ก, ๋ฐ์ดํฐ ์์ด ๋ง์์๋ก ์ฑ๋ฅ์ด ์ ํ๋ฉ๋๋ค.
์์ฝ ์ํ๋ณ ์กฐํ ์ status = 'RESERVED' ์กฐ๊ฑด์ ์ ์ฉํ ์ฟผ๋ฆฌ๊ฐ ํ ์ค์บ์ ์ํํ๋ฉฐ, ์ฝ 71๋ง ๊ฐ์ ํ์ ์ค์บํ๊ณ ์์ด ์ฑ๋ฅ์ด ๋นํจ์จ์ ์ ๋๋ค.
์์ฃผ ์กฐํ๋๋ ์ปฌ๋ผ๋ค์ ๋ํด ์ธ๋ฑ์ค๋ฅผ ์ถ๊ฐํด๋ณด์์ต๋๋ค.
schedule_id
status
reservation_id
schedule_id
, status
concert_id
reservation_status
, reserved_at
์์ฝ์ํ๋ณ ์กฐํ
SELECT * FROM hhplus_study.seat WHERE status = 'RESERVED'
ํน์ ์์ฝ์ ๋ํ ๋ชจ๋ ์ข์ ์กฐํ
SELECT * FROM hhplus_study.seat WHERE reservation_id = 57
reservation_id
๊ฐ ์ธ๋ฑ์ค์ ์ถ๊ฐ๋์ด์๋๋ฐ๋ ์ฑ๋ฅ ๋ณํ๊ฐ ์๋ ์ด์ ๋ Explain ๋ถ์๊ธ์์ ์ค๋ช
๋๋ฆฌ๊ฒ ์ต๋๋ค.ํน์ ์ผ์ ์ ์ข์ ์กฐํ
SELECT * FROM hhplus_study.seat WHERE schedule_id = 10
๊ฐ ์ฟผ๋ฆฌ์ ๋ํด EXPLAIN ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์คํ ๊ณํ์ ๋ถ์ํ์ต๋๋ค.
status = 'RESERVED'
์กฐ๊ฑด์ ์ฌ์ฉํ์ฌ ์ธ๋ฑ์ค๊ฐ ์ ์ฉ๋ ํ
์ด๋ธ์์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ์ ๋, ์ฌ์ฉ๊ฐ๋ฅํ ์ธ๋ฑ์ค์ธ idx_status
๋ฅผ key
๋ก ์ฌ์ฉํ์๊ณ , Using index condition
์ด ์ถ๊ฐ๋์ด ์ธ๋ฑ์ค๋ฅผ ํตํ ์กฐ๊ฑด ํํฐ๋ง์ด ์ ์ฉ๋ ๊ฒ์ ํ์ธํ ์ ์์์ต๋๋ค.
reservation_id
๋ง ์กฐํํ๋ ์ฟผ๋ฆฌ์์๋ ์ธ๋ฑ์ค๊ฐ ์ ์ฉ๋์ง ์๋ ์ด์ ๋ ํด๋น ์ธ๋ฑ์ค๊ฐ schedule_id
์ reservation_id
๋ ์ปฌ๋ผ์ ๋ํด ๋ณตํฉํค๋ก ๊ตฌ์ฑ๋์ด ์๊ธฐ ๋๋ฌธ์
๋๋ค.
์ฟผ๋ฆฌ๊ฐ reservation_id
๋ง ์กฐ๊ฑด์ผ๋ก ์ฌ์ฉํ๋ฉด, schedule_id
๊ฐ ํฌํจ๋ ๋ณตํฉ ์ธ๋ฑ์ค๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๊ฒ ๋ฉ๋๋ค.
๊ทธ ๊ฒฐ๊ณผ, MySQL์ ํ ์ค์บ์ ์งํํ๊ฒ ๋๋ฉฐ ์ฑ๋ฅ์ด ์ ํ๋ฉ๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ reservation_id์ ๋ํด์ ๋ณ๋์ ๋จ์ผ ์ธ๋ฑ์ค๋ฅผ ์ถ๊ฐํ๊ฑฐ๋, schedule_id
๋ฅผ ํฌํจํ ์กฐ๊ฑด์ด ์ถ๊ฐ๋๋ฉด ๋ณตํฉ ์ธ๋ฑ์ค๋ฅผ ํจ๊ณผ์ ์ผ๋ก ํ์ฉํ ์ ์์ต๋๋ค.
์ธ๋ฑ์ค ์ ์ฉ ์ ์คํ์๊ฐ: 418ms (์คํ: 387ms, ๊ฐ์ ธ์ค๊ธฐ: 31ms)
์ธ๋ฑ์ค ์ ์ฉ ํ ์คํ์๊ฐ: 60ms (์คํ: 26ms, ๊ฐ์ ธ์ค๊ธฐ: 34ms)
EXPLAIN ANALYZE
๋ก ๋ถ์ํด๋ณด๋ ์ค์ฒฉ ๋ฃจํ ์กฐ์ธ์์ seat_3
ํ
์ด๋ธ์ ํ ์ค์บ ํ๊ณ ์๋ ๊ฒ์ ๋ฐ๊ฒฌํ์ฌ ์๋ธ์ฟผ๋ฆฌ๋ก ์์ ํ์์ต๋๋ค.reservation_2
ํ
์ด๋ธ์์ reservation_status = 'CONFIRMED'
์ reserved_at
๋ฒ์ ์กฐ๊ฑด์ ๋ง๋ ๋ฐ์ดํฐ๋ง ๋จผ์ ํํฐ๋งํ์๊ณ , ์๋ธ์ฟผ๋ฆฌ์์ ํ์ํ ๋ฐ์ดํฐ๋ง ์ถ์ถํ์ฌ seat_3
ํ
์ด๋ธ๊ณผ ์กฐ์ธํ์๊ณ ์กฐํ ์๋๊ฐ ํฅ์๋ ๊ฒ์ ํ์ธํ์์ต๋๋ค.์ธ๋ฑ์ค ์ต์ ํ๋ ์์ฃผ ์กฐํ๋๋ ์ฟผ๋ฆฌ์ ์ฑ๋ฅ์ ๊ฐ์ ํ์ฌ ์์คํ
์ ํจ์จ์ฑ์ ๋์ฌ์ค๋๋ค.
ํ์ง๋ง ๋ชจ๋ ๊ฒฝ์ฐ์ ์ธ๋ฑ์ค๊ฐ ํญ์ ์ฑ๋ฅ์ ๊ฐ์ ํ๋ ๊ฒ์ ์๋๋ฉฐ, ๋ฐ์ดํฐ์ ๋ถํฌ์ ์กฐํ ํจํด์ ๋ฐ๋ผ ์ธ๋ฑ์ค๋ฅผ ์ ํ์ ์ผ๋ก ์ ์ฉํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
๋ฐ์ดํฐ๊ฐ ์ ๊ฑฐ๋ ํน์ ์กฐ๊ฑด์ด ์์ฃผ ๋ณ๊ฒฝ๋๋ ๊ฒฝ์ฐ์๋ ์ฑ๋ฅ ์ ํ๋ฅผ ์ด๋ํ ์ ์์ต๋๋ค.