์กฐํšŒ ๋ฐฉ์‹ ๊ฐœ์„  ๋ฐ ์ธ๋ฑ์Šค ์ˆ˜์ •

2024. 11. 26. 20:54ยทํ”„๋กœ์ ํŠธ/NolGoat

๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ๋ฐ ๊ฐ€๊ฒŒ ํƒ€์ž… ์ง€์ •

์„œ์šธ์‹œ ๊ณต๊ณต ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ด ๊ฐ€๊ฒŒ ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ , ๊ฐ ๊ฐ€๊ฒŒ์— ํƒ€์ž…(store_type)์„ ์ง€์ •ํ•˜์—ฌ ์ €์žฅํ–ˆ์Šต๋‹ˆ๋‹ค. ํƒ€์ž…์˜ ์ข…๋ฅ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

๊ธฐ์กด ์กฐํšŒ ๋ฐฉ์‹๊ณผ ๋ฌธ์ œ์ 

๊ธฐ์กด ์กฐํšŒ ๋ฐฉ์‹์€ ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ์กฐ๊ฑด์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ํ–„๋ฒ„๊ฑฐ, ํ”ผ์ž์™€ ๊ฐ™์€ ์นดํ…Œ๊ณ ๋ฆฌ(category)๋กœ ์กฐํšŒ
  2. ํƒ€์ž…(store_type)์œผ๋กœ ์กฐํšŒ

ํ•˜์ง€๋งŒ, ์ด ๋ฐฉ์‹์—๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์‹œ๋ฉด, ๊ฐ€๊ฒŒ ํƒ€์ž…์ด CAFE๊ฐ€ ์•„๋‹ˆ๋ฉด์„œ๋„ ์นดํ…Œ๊ณ ๋ฆฌ์—๋Š” ์นดํŽ˜๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ๊ฐ€๊ฒŒ๋“ค์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

 

๋…ธ๋ž˜๋ฐฉ๊ณผ ๋‹น๊ตฌ์žฅ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์˜€์Šต๋‹ˆ๋‹ค.

 

“๊ทธ๋Ÿฌ๋ฉด ๋ชจ๋“  ๊ฐ€๊ฒŒ๋ฅผ ์นดํ…Œ๊ณ ๋ฆฌ๋กœ๋งŒ ์กฐํšŒํ•˜๋ฉด ๋˜์ง€ ์•Š๋‚˜?”๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹ค ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ํ˜„์žฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด, ์นดํ…Œ๊ณ ๋ฆฌ ์ •๋ณด๊ฐ€ ๋น„์–ด ์žˆ๋Š” ๊ฐ€๊ฒŒ๋“ค์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐ์ดํ„ฐ ์ œ๊ณต์ฒ˜์—์„œ ์นดํ…Œ๊ณ ๋ฆฌ ์ •๋ณด๊ฐ€ ์ œ๋Œ€๋กœ ๊ด€๋ฆฌ๋˜์ง€ ์•Š์•„์„œ ๋ฐœ์ƒํ•œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์„œ์šธ์‹œ ๊ณต๊ณต๋ฐ์ดํ„ฐ์—๋Š” ๊ฐ€๊ฒŒ์˜ ์ƒ์„ธ ์นดํ…Œ๊ณ ๋ฆฌ๊ฐ€ ๊ธฐ์žฌ๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉฐ, ์นด์นด์˜ค๋งต ๋ฐ์ดํ„ฐ์—๋Š” ์นดํ…Œ๊ณ ๋ฆฌ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๊ธด ํ•˜์ง€๋งŒ, ํ•ด๋‹น ์ •๋ณด๊ฐ€ ์ œ๋Œ€๋กœ ๊ด€๋ฆฌ๋˜์ง€ ์•Š์•„, ๋น„์–ด ์žˆ๊ฑฐ๋‚˜ ์ž˜๋ชป๋œ ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ๊ฐ€์ง„ ๊ฐ€๊ฒŒ๋“ค์ด ๋‹ค์ˆ˜ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒํƒœ
์„œ์šธ์‹œ ๊ณต๊ณต๋ฐ์ดํ„ฐ

 

์กฐํšŒ ๋ฐฉ์‹ ๊ฐœ์„ 

์•ž์„œ ์–ธ๊ธ‰ํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์—ฌ ์ •ํ™•ํ•œ ์กฐํšŒ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ์กฐํšŒ ์กฐ๊ฑด์„ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด์—๋Š” store_type = 'CAFE' ์กฐ๊ฑด๋งŒ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ, category LIKE '%์นดํŽ˜%' OR store_type = 'CAFE' ์กฐ๊ฑด์œผ๋กœ ๋ณ€๊ฒฝํ•จ์œผ๋กœ์จ ์˜๋„ํ•œ ๋Œ€๋กœ ๋ชจ๋“  ํ–‰์„ ์ •ํ™•ํ•˜๊ฒŒ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. => ์ดํ›„์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ์ˆ˜์ž‘์—…์œผ๋กœ ์ˆ˜์ •ํ•˜์—ฌ ์นดํ…Œ๊ณ ๋ฆฌ ์กฐ๊ฑด๋งŒ์œผ๋กœ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค. (๋ถˆํ•„์š”ํ•œ ์ธ๋ฑ์Šค๋„ ์‚ญ์ œํ–ˆ์Šต๋‹ˆ๋‹ค.) 

// ๊ธฐ์กด ๋ฐฉ์‹
WHERE store_type = 'CAFE'

// ๊ฐœ์„ ํ•œ ๋ฐฉ์‹
WHERE (category LIKE '%์นดํŽ˜%' OR store_type = 'CAFE')

 

 

์ตœ์ข… ์ฟผ๋ฆฌ๋ฌธ

์ด์ „ ๋ฐฉ์‹์—์„œ๋Š” (์นด์นด์˜ค ํ‰์ , ์นดํ…Œ๊ณ ๋ฆฌ) ๋˜๋Š” (์นด์นด์˜ค ํ‰์ , ๊ฐ€๊ฒŒ ํƒ€์ž…)์˜ ์กฐํ•ฉ์œผ๋กœ๋งŒ ์กฐ๊ฑด์„ ์ง€์ •ํ–ˆ์ง€๋งŒ, ๋ณ€๊ฒฝ ํ›„์—๋Š” (์นด์นด์˜ค ํ‰์ , ์นดํ…Œ๊ณ ๋ฆฌ, ๊ฐ€๊ฒŒ ํƒ€์ž…)์˜ ์กฐํ•ฉ์„ ์‚ฌ์šฉํ•˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.

SELECT
    store.id,
    store.name,
    ST_Y(store.location) AS latitude,
    ST_X(store.location) AS longitude,
    store.kakao_average_grade,
    store.kakao_average_grade,
    store.nolgoat_average_grade
FROM store
WHERE (category LIKE '%์นดํŽ˜%' OR store_type = 'CAFE')
AND (
    6371 * ACOS(
        COS(RADIANS(37.492219089015705)) 
        * COS(RADIANS(ST_Y(store.location))) 
        * COS(RADIANS(ST_X(store.location)) - RADIANS(127.03116426578977)) 
        + SIN(RADIANS(37.492219089015705)) 
        * SIN(RADIANS(ST_Y(store.location)))
        )
    ) <= 1.0
AND store.kakao_average_grade >= 5.0 
ORDER BY store.kakao_average_grade DESC;

 

์„ฑ๋Šฅ ๊ฐœ์„ ์„ ์œ„ํ•œ ์ธ๋ฑ์Šค ์ตœ์ ํ™”

๊ธฐ์กด ์ธ๋ฑ์Šค(์นด์นด์˜ค ํ‰์ , ์นดํ…Œ๊ณ ๋ฆฌ)๋ฅผ ํ†ตํ•ด์„œ๋„ ์กฐํšŒ ์„ฑ๋Šฅ์— ๊ฐœ์„ ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

 

[Explain Analyze]

 

๊ทธ๋Ÿฌ๋‚˜ ์„ฑ๋Šฅ์„ ๋”์šฑ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์ƒˆ๋กœ์šด ๋ฉ€ํ‹ฐ ์ปฌ๋Ÿผ ์ธ๋ฑ์Šค(์นด์นด์˜ค ํ‰์ , ์นดํ…Œ๊ณ ๋ฆฌ, ๊ฐ€๊ฒŒ ํƒ€์ž…)๋ฅผ ์ƒ์„ฑํ–ˆ๊ณ , ์ด๋ฅผ ํ†ตํ•ด ์กฐํšŒ ์„ฑ๋Šฅ์„ ๋”์šฑ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

 

[Explain Analyze]

 

์ƒˆ๋กœ ์ƒ์„ฑํ•œ ์ธ๋ฑ์Šค๋Š” ๊ธฐ์กด ์ธ๋ฑ์Šค์— store_type ์ปฌ๋Ÿผ์„ ์ถ”๊ฐ€ํ•œ ํ˜•ํƒœ์ด๊ธฐ ๋•Œ๋ฌธ์—, (์นด์นด์˜ค ํ‰์ , ์นดํ…Œ๊ณ ๋ฆฌ) ์กฐ๊ฑด์—๋„ ์ ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด์— ๋”ฐ๋ผ ๊ธฐ์กด ์ธ๋ฑ์Šค๋Š” ๋ถˆํ•„์š”ํ•ด์ ธ ์‚ญ์ œํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

โšก๊ฒฐ๊ณผ

์ธ๋ฑ์Šค๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ ์š”์ฒญ ์ฒ˜๋ฆฌ ์†๋„๋ฅผ 109ms์—์„œ 63ms๋กœ ๋‹จ์ถ•, ์„ฑ๋Šฅ์„ ์•ฝ 42.2% ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

'ํ”„๋กœ์ ํŠธ > NolGoat' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

ํšจ์œจ์ ์ธ ํ† ํฐ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ Redis ๋„์ž…  (1) 2024.11.29
์ธ์ฆ ๋ณด์•ˆ ๊ฐ•ํ™”  (0) 2024.11.29
์ธ์ฆ์ด ํ•„์š”ํ•œ URL ๊ณตํ†ต ๊ด€๋ฆฌ  (0) 2024.11.27
Spring Security ์ธ์ฆ ํ•„ํ„ฐ ์˜ˆ์™ธ ์ฒ˜๋ฆฌํ•˜๊ธฐ  (0) 2024.11.27
MySQL ์กฐํšŒ ์„ฑ๋Šฅ ๊ฐœ์„   (0) 2024.11.26
'ํ”„๋กœ์ ํŠธ/NolGoat' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ์ธ์ฆ ๋ณด์•ˆ ๊ฐ•ํ™”
  • ์ธ์ฆ์ด ํ•„์š”ํ•œ URL ๊ณตํ†ต ๊ด€๋ฆฌ
  • Spring Security ์ธ์ฆ ํ•„ํ„ฐ ์˜ˆ์™ธ ์ฒ˜๋ฆฌํ•˜๊ธฐ
  • MySQL ์กฐํšŒ ์„ฑ๋Šฅ ๊ฐœ์„ 
yongh๐Ÿ™‚
yongh๐Ÿ™‚
yongh-dev ๋‹˜์˜ ๋ธ”๋กœ๊ทธ ์ž…๋‹ˆ๋‹ค.
  • yongh๐Ÿ™‚
    ๊ฐœ๋ฐœ ๊ธฐ๋ก
    yongh๐Ÿ™‚
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (9)
      • ํ”„๋กœ์ ํŠธ (9)
        • NolGoat (9)
  • ์ตœ๊ทผ ๊ธ€

  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.2
yongh๐Ÿ™‚
์กฐํšŒ ๋ฐฉ์‹ ๊ฐœ์„  ๋ฐ ์ธ๋ฑ์Šค ์ˆ˜์ •
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”