๐Ÿ‘จ‍๐Ÿ‘ฉ‍๐Ÿ‘ง‍๐Ÿ‘ฆ Project/๐Ÿ“บ KIOSEK

Index๋ฅผ ์ด์šฉํ•˜์—ฌ ์กฐํšŒ ์ฟผ๋ฆฌ 1374% ์„ฑ๋Šฅ ํ–ฅ์ƒ๊ธฐ (with MySQL)

DevPoong 2023. 8. 16. 18:34

1. ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ณ„๊ธฐ

ํ˜„์žฌ ํ”„๋กœ์ ํŠธ๋Š” ์˜ˆ์•ฝ๊ณผ ๊ด€๋ จํ•˜์—ฌ ์‹œ๊ฐ„์„ ๋งŽ์ด ๋‹ค๋ฃจ๊ณ  ์žˆ๋‹ค.
๋”ฐ๋ผ์„œ, DATETIME ํƒ€์ž…์˜ ์ปฌ๋Ÿผ์„ ๋ฒ”์œ„ ๋น„๊ต ๋˜๋Š” ๋™๋“ฑ ๋น„๊ตํ•˜์—ฌ ์กฐํšŒํ•˜๋Š” ์ฟผ๋ฆฌ๊ฐ€ ๋งŽ์ด ์กด์žฌํ•˜์˜€๋‹ค.
ํ•ด๋‹น ์ปฌ๋Ÿผ์— ๋Œ€ํ•ด ์ธ๋ฑ์Šค๋ฅผ ์ง€์ •ํ•˜์—ฌ ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ์„๊ฒƒ ๊ฐ™์•„ Real MySQL 8.0์˜ ๋„์›€์„ ๋ฐ›์•„ ์‹œ๋„ํ•ด๋ณด์•˜๊ณ  ๊ธฐ๊ฐ„๋ณ„ ์˜ˆ์•ฝ ๋‚ด์—ญ ์กฐํšŒ ์ฟผ๋ฆฌ์— ๋Œ€ํ•ด 1374% ํ–ฅ์ƒ์„ ๋ณด๊ฒŒ ๋˜์—ˆ๋‹ค.

2. ๋ฌธ์ œ์˜ ์ฟผ๋ฆฌ

๋ฌธ์ œ์˜ ์•„๋ž˜ ์ฟผ๋ฆฌ๋Š” ๊ธฐ๊ฐ„๋ณ„๋กœ ์˜ˆ์•ฝ ๋‚ด์—ญ์„ ์กฐํšŒํ•˜๋Š” ์ฟผ๋ฆฌ์ด๋‹ค.
where์ ˆ์—์„œ DATETIME ํƒ€์ž…์˜ ์˜ˆ์•ฝ ์‹œ์ž‘๋‚ ์งœ์‹œ๊ฐ„์— ํ•ด๋‹นํ•˜๋Š” start_at ์ปฌ๋Ÿผ์— ๋Œ€ํ•ด BETWEEN ์—ฐ์‚ฐ์„ ์ง„ํ–‰ํ•œ๋‹ค.
๋‚˜๋Š” start_at ์ปฌ๋Ÿผ์— ๋Œ€ํ•ด Index๋ฅผ ์ ์šฉํ•ด๋ณด๊ณ ์ž ํ–ˆ๋‹ค.

select
    reservatio0_.project_table_id,
    reservatio0_.start_at,
    reservatio0_.end_at,
    tableretur1_.returned_at,
    reservatio0_.reservation_status
from reservation reservatio0_ 
left outer join table_return tableretur1_ 
        on reservatio0_.reservation_id=tableretur1_.reservation_id 
where (reservatio0_.start_at between '2023-01-01 08:00:00' and '2023-01-02 08:00:00') 
    and (reservatio0_.reservation_status not in  ('CANCELED' , 'UN_USED' , 'RETURNED')) 
    and (reservatio0_.project_table_id in (
            select projecttab2_.table_id 
            from project_table projecttab2_ 
            where projecttab2_.project_room_id=1
    )
);

 

3. ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ์™€ ์„ ํƒํ•œ ๊ธฐ์ค€

์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” Table์— ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์†์ ์œผ๋กœ ์ €์žฅํ•˜๊ฒŒ ๋˜๋ฉด ๋‚ด๋ถ€์ ์œผ๋กœ ์ˆœ์„œ ์—†์ด ์Œ“์ด๊ฒŒ ๋œ๋‹ค.
๐Ÿฅต ์ด ๊ฒฝ์šฐ์— ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๊ณ ์ž WHERE์ ˆ์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด Table์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์ ‘๊ทผํ•˜์—ฌ ๊ฒ€์ƒ‰์กฐ๊ฑด๊ณผ ์ผ์น˜ํ•˜๋Š”์ง€ ๋น„๊ตํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค. ์ด๋ฅผ Full Table Scan์ด๋ผ๊ณ  ํ‘œํ˜„ํ•˜๊ณ  ํšจ์œจ์ด ๋งŽ์ด ๋–จ์–ด์ง„๋‹ค.

 ํ•˜์ง€๋งŒ, ๐Ÿ˜„ ํŠน์ • column์— ๋Œ€ํ•œ Index๋ฅผ ์ƒ์„ฑํ•ด ๋†“์€ ๊ฒฝ์šฐ ํ•ด๋‹น ์†์„ฑ์— ๋Œ€ํ•˜์—ฌ search-key๊ฐ€ ์ •๋ ฌ๋˜์–ด (search-key, pointer)๋ฅผ ๋ณ„๋„๋กœ ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์กฐ๊ฑด ๊ฒ€์ƒ‰(SELECT-WHERE) ์†๋„๊ฐ€ ๊ต‰์žฅํžˆ ๋นจ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 

์œ„์˜ ๋ง๋งŒ ๋“ค์œผ๋ฉด ์ธ๋ฑ์Šค๋Š” ๋งŽ์„ ์ˆ˜๋ก ์ข‹๋‹ค๊ณ  ์ฐฉ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค. ์ธ๋ฑ์Šค๋Š” ๋ฌด์กฐ๊ฑด ๋งŽ์ด ์ƒ์„ฑํ•œ๋‹ค๊ณ  ํ•ด์„œ ๊ฒ€์ƒ‰ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œ์ผœ์ฃผ์ง€๋Š” ์•Š๋Š”๋‹ค.
์ด์œ ๋Š” ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

  • (๋‹จ์ 1) ์ถ”๊ฐ€์ €์žฅ ๊ณต๊ฐ„์ด ํ•„์š”
    • index๋ฅผ ์ƒ์„ฑํ•˜๋ฉด index ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์œ„ํ•œ ์ €์žฅ ๊ณต๊ฐ„์ด ์ถ”๊ฐ€์ ์œผ๋กœ ํ•„์š”ํ•˜๋‹ค.
    • ๋ณดํ†ต ํ…Œ์ด๋ธ”์˜ ํฌ๊ธฐ์˜ 10% ์ •๋„์˜ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•œ๋‹ค.
  • (๋‹จ์ 2) ๋Š๋ฆฐ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์ž‘์—…
    • ๊ฒ€์ƒ‰์ด ์•„๋‹Œ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์„ ํ•  ๋•Œ, ์ฆ‰ INSERT, UPDATE, DELETE๊ฐ€ ์ž์ฃผ ๋ฐœ์ƒํ•˜๋ฉด ์„ฑ๋Šฅ์ด ๋‚˜๋น ์งˆ ์ˆ˜ ์žˆ๋‹ค.
    • B+ Tree ๊ตฌ์กฐ์˜ index๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ถ”๊ฐ€๋  ๋•Œ๋งˆ๋‹ค tree ๊ตฌ์กฐ๊ฐ€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋‚˜๋Š” ์•„๋ž˜์˜ ๋„ค๊ฐ€์ง€ ๊ธฐ์ค€์„ ํ†ตํ•ด start_at ์ปฌ๋Ÿผ์„ ์ธ๋ฑ์Šค๋กœ ์„ ํƒํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

 

1. ์นด๋””๋„๋ฆฌํ‹ฐ (Cardinality)

์นด๋””๋„๋ฆฌํ‹ฐ๋Š” ์ปฌ๋Ÿผ์— ์‚ฌ์šฉ๋˜๋Š” ๊ฐ’์˜ ๋‹ค์–‘์„ฑ ์ •๋„๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ๊ฐ’์˜ ์ค‘๋ณต์ด ์ ์„์ˆ˜๋ก ์นด๋””๋„๋ฆฌํ‹ฐ๋Š” ๋†’๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
์ฆ‰, ์นด๋””๋„๋ฆฌํ‹ฐ๊ฐ€ ๋†’์„ ์ˆ˜๋ก ์ธ๋ฑ์Šค ์„ค์ •์— ์ข‹์€ ์ปฌ๋Ÿผ์ด๋‹ค.
โœ… start_at ์ปฌ๋Ÿผ์€ '2023-08-01 08:00:00' ๊ณผ ๊ฐ™์€ DATETIME๊ฐ’์œผ๋กœ ์ €์žฅ๋˜๊ณ  ์ค‘๋ณต๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ ์œผ๋ฏ€๋กœ ์นด๋””๋„๋ฆฌํ‹ฐ๊ฐ€ ๋†’๋‹ค.

2.  ์„ ํƒ๋„ (Selectivity)

๋ฐ์ดํ„ฐ์—์„œ ํŠน์ • ๊ฐ’์„ ์–ผ๋งˆ๋‚˜ ์ž˜ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ์ง€ํ‘œ์ด๋‹ค.
์„ ํƒ๋„๋Š” ๋‚ฎ์„์ˆ˜๋ก ์ธ๋ฑ์Šค ์„ค์ •์— ์ข‹์€ ์ปฌ๋Ÿผ์ด๋‹ค.
์„ ํƒ๋„ = (์ปฌ๋Ÿผ์˜ ํŠน์ • ๊ฐ’์˜ ๋ ˆ์ฝ”๋“œ ์ˆ˜ / ํ…Œ์ด๋ธ”์˜ ์ด ๋ ˆ์ฝ”๋“œ ์ˆ˜) * 100

์„ ํƒ๋„๋Š” 5~10%๊ฐ€ ์ ๋‹นํ•˜๋‹ค.
โœ… start_at ์ปฌ๋Ÿผ์€ ๋งŒ์•ฝ ํ•ด๋‹น ํ…Œ์ด๋ธ”์— ์ „์ฒด ๋ ˆ์ฝ”๋“œ๊ฐ€ 1000๊ฐœ์ด๊ณ  start_at ์ปฌ๋Ÿผ์˜ ๊ฐ’์ด ์ค‘๋ณต๋  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” ํšŒ์˜๊ณต๊ฐ„์˜ ์ˆ˜์™€ ์ผ์น˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์—  ์ตœ์•…์˜ ๊ฒฝ์šฐ์—๋„ 2%๋ฅผ ๋„˜์ง€ ์•Š๋Š”๋‹ค.

3.  ํ™œ์šฉ๋„ 

ํ•ด๋‹น ์ปฌ๋Ÿผ์ด ์‹ค์ œ ์ž‘์—…์—์„œ ์–ผ๋งˆ๋‚˜ ํ™œ์šฉ๋˜๋Š”์ง€์— ๋Œ€ํ•œ ์ง€ํ‘œ์ด๋‹ค.
ํ™œ์šฉ๋„๊ฐ€ ๋†’์„ ์ˆ˜๋ก ์ธ๋ฑ์Šค ์„ค์ •์— ์ข‹์€ ์ปฌ๋Ÿผ์ด๋‹ค.

โœ… start_at ์ปฌ๋Ÿผ์€ WHERE ์กฐ๊ฑด์— ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์ปฌ๋Ÿผ์œผ๋กœ ํ™œ์šฉ๋„๊ฐ€ ๋†’์€ ์ปฌ๋Ÿผ์ด๋‹ค.

4.  ์ˆ˜์ •๋นˆ๋„

ํ•ด๋‹น ์ปฌ๋Ÿผ์„ ์ˆ˜์ •ํ•˜๋Š” ๋นˆ๋„๊ฐ€ ๋‚ฎ์„์ˆ˜๋ก ์ ํ•ฉํ•˜๋‹ค. 
โœ… start_at ์ปฌ๋Ÿผ์€ ์‚ฌ์šฉ์ž๋Š” ์˜ˆ์•ฝ ์‹œ๊ฐ„์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์ˆ˜์ •๋นˆ๋„๋ณด๋‹ค ์กฐํšŒ๋นˆ๋„๊ฐ€ ํ›จ์”ฌ ์›”๋“ฑํžˆ ๋งŽ๋‹ค. ์ˆ˜์ •๊ฐ€๋Šฅํ•˜๋”๋ผ๋„ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๋ฅผ ์ƒ๊ฐํ–ˆ์„ ๋•Œ ์ด๋“์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

 

4. ์ธ๋ฑ์Šค ์‚ฌ์šฉ ์ „ ํ›„ ์‹คํ–‰ ๊ณ„ํš ๋น„๊ต

reservation ํ…Œ์ด๋ธ”์˜ ์ „์ฒด ๋ ˆ์ฝ”๋“œ ์ˆ˜๋Š” 351,360๊ฐœ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฒ€์ƒ‰ ๋Œ€์ƒ ๋ ˆ์ฝ”๋“œ ์ˆ˜๋Š” 553๊ฐœ์ด๋‹ค.

1. ์ธ๋ฑ์Šค ์‚ฌ์šฉ ์ „ ์‹คํ–‰๊ณ„ํš

๋‘๋ฒˆ์งธ ์ค„์—, reservation ํ…Œ์ด๋ธ”์€
- select_type: WHERE์ ˆ์—์„œ ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ PRIMARY์ด๋‹ค.

- type : ์šฐ์„  3๊ฐœ์˜ ํ–‰์ด ๋ชจ๋‘ id๊ฐ€ ๊ฐ™์œผ๋ฏ€๋กœ ์กฐ์ธ์ด ๋˜์–ด ์‹คํ–‰๋œ๋‹ค๋Š” ๊ฒƒ์€ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๋‚˜๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ–ˆ์ง€๋งŒ MySQL 8.0์—์„œ๋Š” ์„ธ๋ฏธ์กฐ์ธ ์ตœ์ ํ™”๋ฅผ ํ†ตํ•ด ์กฐ์ธ์œผ๋กœ ๋ณ€ํ˜•๋œ๋‹ค๋Š” ๊ฒƒ์„ ์—ฌ๊ธฐ์„œ๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ref๊ฐ€ ์‚ฌ์šฉ๋˜์—ˆ์œผ๋ฉฐ ์กฐ์ธ์— ์œ ๋‹ˆํฌํ•˜์ง€ ์•Š์€ FK๋ฅผ ์ด์šฉํ•˜๋ฉฐ ๋ฐ˜ํ™˜๋˜๋Š” ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋ฐ˜๋“œ์‹œ 1๊ฑด์ด๋ผ๋Š” ๋ณด์žฅ์ด ์—†์ง€๋งŒ, ๊ทธ๋ž˜๋„ ๋™๋“ฑํ•œ ์กฐ๊ฑด์œผ๋กœ๋งŒ ๋น„๊ต๋˜๋ฏ€๋กœ ๋น ๋ฅธ ๋ ˆ์ฝ”๋“œ ์กฐํšŒ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜์ด๋‹ค.

- ref: ๊ฐ’ ๋น„๊ต์— ์‚ฌ์šฉ๋œ ๊ฐ’์€ project_table ํ…Œ์ด๋ธ”์˜ table_id ์ปฌ๋Ÿผ์ด๋‹ค.

rows: MySQL ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ ํ•ด๋‹น ๋ถ€๋ถ„์„ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ ์ฝ์–ด์•ผ ํ•  ๋ ˆ์ฝ”๋“œ์˜ ์ˆ˜๋กœ ์˜ˆ์ธกํ•œ ๊ฒƒ์ด 14650๊ฐœ์ด๋‹ค. ํ•ด๋‹น rows ๊ฐœ์ˆ˜๋Š” ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ ˆ์ฝ”๋“œ์˜ ์˜ˆ์ธก์น˜๊ฐ€ ์•„๋‹ˆ๋ผ ์ฟผ๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฝ๊ณ  ์ฒดํฌํ•ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฏ€๋กœ ์ •ํ™•ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค. 

2. ์ธ๋ฑ์Šค ์‚ฌ์šฉ ํ›„ ์‹คํ–‰๊ณ„ํš

- select_type: WHERE์ ˆ์—์„œ ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ PRIMARY์ด๋‹ค.

- type : ์ธ๋ฑ์Šค ๋ ˆ์ธ์ง€ ์Šค์บ” ํ˜•ํƒœ์˜ ์ ‘๊ทผ ๋ฐฉ๋ฒ•์ด ์‚ฌ์šฉ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ range ๊ฐ’์„ ํ†ตํ•ด ์•Œ ์ˆ˜ ์žˆ๋‹ค. BETWEEN ์—ฐ์‚ฐ์œผ๋กœ ๋ฒ”์œ„ ๊ฒ€์ƒ‰์„ ํ•˜์˜€์„ ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค. ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ๊ธดํ•˜์ง€๋งŒ, range ์ ‘๊ทผ ๋ฐฉ๋ฒ•๋„ ์ƒ๋‹นํžˆ ๋น ๋ฅด๋ฉฐ, ๋ชจ๋“  ์ฟผ๋ฆฌ๊ฐ€ ์ด ์ ‘๊ทผ ๋ฐฉ๋ฒ•๋งŒ ์‚ฌ์šฉํ•ด๋„ ์ตœ์ ์˜ ์„ฑ๋Šฅ์ด ๋ณด์žฅ๋œ๋‹ค.

- key_len : DATETIME ํฌ๋งท์„ ์ด์šฉํ•˜์˜€๊ณ , ๋‹จ์ผ ์ปฌ๋Ÿผ ์ธ๋ฑ์Šค์ด๋ฏ€๋กœ 8๋ฐ”์ดํŠธ์˜ ํ‚ค ๊ธธ์ด๋ฅผ ์‚ฌ์šฉํ–ˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

- rows: 1151๊ฐœ๋กœ WHERE์ ˆ์—์„œ ์ธ๋ฑ์Šค๋กœ ์„ค์ •๋œ start_at ์ปฌ๋Ÿผ์˜ ๋น„๊ต๊ฐ€ ๋จผ์ € ์‹คํ–‰๋˜์–ด ๋น„๊ต ํ•ด์•ผํ•  ๋ ˆ์ฝ”๋“œ๊ฐ€ ํ™• ์ค„์—ˆ๋‹ค๊ณ  ํŒ๋‹จ๋œ๋‹ค.

 

5. ์„ฑ๋Šฅ ๋น„๊ต

์ฟผ๋ฆฌ์˜ ์‹คํ–‰ ์‹œ๊ฐ„ ์ธก์ •์€ SHOW profiles; ๋ช…๋ น์„ ํ†ตํ•ด ํ™•์ธํ•˜์˜€๋‹ค.

โœ… ํ™˜๊ฒฝ: reservation ํ…Œ์ด๋ธ”์˜ ์ „์ฒด ๋ ˆ์ฝ”๋“œ ์ˆ˜๋Š” 351,360๊ฐœ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฒ€์ƒ‰ ๋Œ€์ƒ ๋ ˆ์ฝ”๋“œ ์ˆ˜๋Š” 553๊ฐœ์ด๋‹ค.

 

10ํšŒ ์ฟผ๋ฆฌ ์„ฑ๋Šฅ์„ ์ธก์ •ํ•˜์˜€์„ ๋•Œ start_at์— ๋Œ€ํ•ด
์ธ๋ฑ์Šค ๋ฏธ์ ์šฉํ•˜์˜€์„ ๋•Œ๋Š” ํ‰๊ท  174ms
์ธ๋ฑ์Šค๋ฅผ ์ ์šฉํ•˜์˜€์„ ๋•Œ๋Š”  ํ‰๊ท  11.8ms

 

ํ•ด๋‹น ๊ฒ€์ƒ‰ ์ฟผ๋ฆฌ์˜ ์„ฑ๋Šฅ์ด 1374% ํ–ฅ์ƒ๋˜์—ˆ์Œ์„ ๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

์ด์Šˆ

์ธ๋ฑ์Šค๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ์Œ์—๋„ ํ’€ ํ…Œ์ด๋ธ” ์Šค์บ”์ด ๋˜๋Š” ํ˜„์ƒ

start_at์— ๋Œ€ํ•˜์—ฌ BETWEEN ์—ฐ์‚ฐ์„ ๋„“์€ ๋ฒ”์œ„ ์ฆ‰, ๋งŽ์€ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด์„œ ์ง„ํ–‰ํ•˜์˜€์„ ๋•Œ ์ธ๋ฑ์Šค๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ์Œ์—๋„, ํ’€ ํ…Œ์ด๋ธ” ์Šค์บ”์„ ํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค.

 

์šฐ์„  ์ „์ฒด ๋ฐ์ดํ„ฐ ๋ ˆ์ฝ”๋“œ ์ˆ˜๋Š” 351,360์ด๊ณ  ์‹คํ–‰๊ณ„ํš์„ ์‚ดํŽด๋ณด์•˜์„ ๋•Œ, rows๊ฐ€ 1151๊ฐœ์ผ ๋•Œ๊นŒ์ง€๋Š” ์ธ๋ฑ์Šค ๋ ˆ์ธ์ง€ ์Šค์บ”์œผ๋กœ ๋™์ž‘ํ•˜๊ณ ,
 ๊ทธ ์ด์ƒ์œผ๋กœ ๋Š˜์–ด๋‚  ๋•Œ๋Š” ํ’€ ํ…Œ์ด๋ธ” ์Šค์บ”์„ ํ•˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค.

 

ํ•ด๋‹น ๋ฌธ์ œ์— ๋Œ€ํ•ด ์ฐพ์•„๋ณด๋‹ค๊ฐ€ Real MySQL 8.0 ์ฑ…์—์„œ๋„ ๋น„์Šทํ•œ ์‚ฌ๋ก€๋ฅผ ๋ฐœ๊ฒฌํ–ˆ๋Š”๋ฐ, ์ •ํ™•ํ•œ ํ•ด๋‹ต์„ ์ฐพ์ง€๋Š” ๋ชปํ–ˆ์ง€๋งŒ
MySQL ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์ƒํ™ฉ์— ๋”ฐ๋ผ ์ธ๋ฑ์Šค ๋ ˆ์ธ์ง€ ์Šค์บ”์ด ๋ณ„๋กœ ํšจ์œจ์ ์ด์ง€ ๋ชปํ•˜๋‹ค๊ณ  ํŒ๋‹จํ•˜์˜€์„ ๋•Œ ํ’€ ํ…Œ์ด๋ธ” ์Šค์บ”์„ ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ ๊ฐ™์•˜๋‹ค.