๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ–ฅDEV/์ƒ์‚ฐ์„ฑ ํ–ฅ์ƒ! TIP

[Tip] cursor๊ธฐ๋ฐ˜ ํŽ˜์ด์ง•

by bdd 2022. 3. 19.

๊ฒŒ์‹œํŒ ๋งŒ๋“ค๊ธฐ ๋ฏธ์…˜์„ ํ•˜๋˜ ์ค‘ ๊ตฌ๊ธ€, ๋„ค์ด๋ฒ„, ์นด์นด์˜ค ๋“ฑ ํ˜„์žฌ ์„œ๋น„์Šค๋ฅผ ์ƒ์šฉ์ค‘์ธ IT ๋Œ€๊ธฐ์—…๋“ค์€ ์–ด๋–ป๊ฒŒ ํŽ˜์ด์ง•์„ ํ• ๊นŒ? ์— ๋Œ€ํ•ด ๊ณ ๋ฏผํ•˜๋ฉฐ ๊ธ€์„ ์ž‘์„ฑํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ธ€์€ ์ „๋ฐ˜์ ์œผ๋กœ ๊น€๋ฏผ์ƒ CTO๋‹˜์˜ ๊ธ€์„ ๋ฐ”ํƒ•์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

 

 

 

 

 

 

1. offset๊ธฐ๋ฐ˜ ํŽ˜์ด์ง• 


offset ๊ธฐ๋ฐ˜ ํŽ˜์ด์ง•์€ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋ช‡ ๋ฒˆ์งธ ์œ„์น˜์— ์กด์žฌํ•˜๋Š”์ง€์— ์ค‘์ ์„ ๋‘ก๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ์Šค์บ”ํ•ด์„œ ํ•ด๋‹น ํŽ˜์ด์ง€๊นŒ์ง€ ์ด๋™ ํ›„ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์•„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋ณดํŽธ์ ์œผ๋กœ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ํŽ˜์ด์ง• ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. * Page Navigator๋ผ ๋ถˆ๋ฆฌ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐ”(bar)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. 

 

 

 

 

 

 

offset๊ธฐ๋ฐ˜ ํŽ˜์ด์ง•์˜ ์ฟผ๋ฆฌ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€๋ฐ์š”, OFFSET๊ณผ LIMIT, ์ •๋ ฌ ๊ธฐ์ค€์„ ์ฃผ๊ณ  ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ ์ฐพ์•„์˜ต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๊ฐ€ ์ฐพ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜๋Š” ํŽ˜์ด์ง€๋ฅผ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ๊ณง๋ฐ”๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Š” ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์—…๋กœ๋“œ ๋˜๋Š” ์„œ๋น„์Šค์—์„œ ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต๊ณผ ์„ฑ๋Šฅ ๋ฌธ์ œ๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ๋‹จ์ ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

 

 

 

 

 

 

 

๋ฐ์ดํ„ฐ ์ค‘๋ณต

ํŽ˜์ด์ง€ ์š”์ฒญ ์‚ฌ์ด ๋ฐ์ดํ„ฐ์˜ ๋ณ€ํ™”(์ถ”๊ฐ€/์‚ญ์ œ)๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์ค‘๋ณต ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 1ํŽ˜์ด์ง€์—์„œ 10๊ฐœ์˜ row๋ฅผ ๋ถˆ๋Ÿฌ์™€์„œ ์ƒํ’ˆ์„ ๋ณด์—ฌ์ฃผ๊ณ  ์žˆ์„ ๋•Œ ์šด์˜์ž๊ฐ€ 5๊ฐœ์˜ ์ƒํ’ˆ์„ ์ƒˆ๋กœ ์ถ”๊ฐ€ํ•œ๋‹ค๋ฉด ๊ณ ๊ฐ์ด 2ํŽ˜์ด์ง€๋กœ ๋„˜์–ด๊ฐ”์„ ๋•Œ 1ํŽ˜์ด์ง€์—์„œ ๋ดค๋˜ ๋’ค์ชฝ 5๊ฐœ ์ƒํ’ˆ์ด ์ค‘๋ณต์œผ๋กœ ๋ณด์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๋ฐ์ดํ„ฐ์˜ ์ถ”๊ฐ€, ์‚ญ์ œ๊ฐ€ ๋นˆ๋ฒˆํ•œ ์„œ๋น„์Šค๋ผ๋ฉด ๊ณ ๊ฐ๋“ค์€ ์ข‹์€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๊ฐ€์ง€์ง€ ๋ชปํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

 

 

 

์„ฑ๋Šฅ ๋ฌธ์ œ

๋˜ํ•œ ์„ฑ๋Šฅ ๋ฌธ์ œ๋„ ์กด์žฌํ•˜๋Š”๋ฐ์š”, ๊ตฌ๊ธ€ ํŽ˜์ด์ง€ ์ค‘ 1์–ต ๋ฒˆ์งธ ํŽ˜์ด์ง€์— ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ ํ•œ ํŽ˜์ด์ง€์— 10๊ฐœ์”ฉ ๋ฐ์ดํ„ฐ๊ฐ€ ์˜จ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ์•ฝ 10์–ต๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•œ ํ›„ 10๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋งŒ ๊ฐ€์ ธ์˜จ๋‹ค. ์ฆ‰, ์ •๋ ฌ๊ธฐ์ค€(order by)์— ๋Œ€ํ•ด ํ•ด๋‹น row๊ฐ€ ๋ช‡ ๋ฒˆ์งธ ์ˆœ์„œ์ธ์ง€ ์•Œ์ง€ ๋ชปํ•˜๋ฏ€๋กœ OFFSET ๊ฐ’์„ ์ง€์ •ํ•˜์—ฌ ์ฟผ๋ฆฌ๋ฅผ ํ•œ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ ์ง€์ •๋œ OFFSET๊นŒ์ง€ ๋ชจ๋‘ ๋งŒ๋“ค์–ด ๋†“์€ ํ›„ ์ง€์ •๋œ ๊ฐฏ์ˆ˜๋ฅผ ์ˆœํšŒํ•˜์—ฌ ์ž๋ฅด๋Š” ๋ฐฉ์‹์ด๋‹ค. ๋”ฐ๋ผ์„œ ์„ฑ๋Šฅ์€ ์ด์— ๋น„๋ก€ํ•ด์„œ ๋–จ์–ด์ง€๊ฒŒ ๋œ๋‹ค. ์ด์— ๊ด€ํ•ด ์•„๋ž˜ ์ž˜ ์ •๋ฆฌ๋œ ์‚ฌ์ดํŠธ๊ฐ€ ์žˆ๋‹ค. 

 

 

 

Why Order By With Limit and Offset is Slow - Faster Pagination in Mysql

Paging using LIMIT and OFFSET clauses in MySQL can be very slow. In this article we describe the seek method that allows a faster, more stable paging performance.

www.eversql.com

 

 

 

 

 

2. ์ปค์„œ ๊ธฐ๋ฐ˜ ํŽ˜์ด์ง•


PK๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํŽ˜์ด์ง€๋ฅผ ๊ตฌํ•˜๋Š” ๋ฐฉ์‹. ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ '์–ด๋–ค ๋ฐ์ดํ„ฐ์˜ ๋‹ค์Œ'์— ์žˆ๋Š”์ง€์— ์ง‘์ค‘ํ•œ๋‹ค. ์ธ์Šคํƒ€ ๊ทธ๋žจ, ํŽ˜์ด์Šค ๋ถ ๋“ฑ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ, ๋Œ€๊ทœ๋ชจ ์›น ์‚ฌ์ดํŠธ์—์„œ ์ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 

 

https://dribbble.com/shots/2479061-Scroll-Marker-Idea

 

 

/article?page=1&limit=10
SELECT * FROM article WHERE id <= {cursor} ORDER BY id DESC LIMIT {limit}

 

 

 

 

 

 

 

 

์•„๋ž˜๋Š” Offset๊ณผ Cursor๊ธฐ๋ฐ˜ ํŽ˜์ด์ง•์— ๋Œ€ํ•œ ํšจ์œจ์„ฑ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ทธ๋ž˜ํ”„์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์œผ๋ฉด ๋งŽ์„์ˆ˜๋ก ์„ฑ๋Šฅ์— ํฐ ์˜ํ–ฅ์„ ๋ผ์น˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

 

 

 

 

 

 

์—ฌ๊ธฐ์„œ ์ฒซ ํŽ˜์ด์ง€ ์กฐํšŒํ•  ๋•Œ์™€ ๋‘๋ฒˆ์งธ ํŽ˜์ด์ง€๋ถ€ํ„ฐ ์กฐํšŒํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ์ฟผ๋ฆฌ๊ฐ€ ๋‹ฌ๋ผ ๋™์  ์ฟผ๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ๋ฐ์š”. (์ฒซ ํŽ˜์ด์ง€๋ฅผ ์กฐํšŒํ• ๋•Œ๋Š” ๊ธฐ์ค€์ด ๋˜๋Š” id ๊ฐ’์„ ์•Œ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.) ๊ทธ๋ž˜์„œ ์•„๋ž˜์™€ ๊ฐ™์€ ์ฝ”๋“œ๊ฐ€ ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

 

 

 

์ปค์„œ ๊ธฐ๋ฐ˜ ํŽ˜์ด์ง•์„ ์‚ฌ์šฉํ•˜๋ฉด offset pagination์— ์กด์žฌํ•˜๋Š” 2๊ฐ€์ง€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฌผ๋ก  ์ปค์„œํŽ˜์ด์ง•๋„ ๋งŒ๋Šฅ์€ ์•„๋‹ˆ๋‹ค.

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

   

      - ์ธ๋ฑ์Šค๊ฐ€ ์ ์šฉ๋œ ๊ฐ’์„ ๋น„๊ตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ…Œ์ด๋ธ” ํ’€์Šค์บ”์„ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 

      - ๋ฐ์ดํ„ฐ ์“ฐ๊ธฐ๊ฐ€ ๋นˆ๋ฒˆํ•œ ํ…Œ์ด๋ธ”์ด์—ฌ๋„ ๋‹ค์Œ ํŽ˜์ด์ง€๋„ค์ด์…˜ ์กฐํšŒ ์‹œ ๊ฐ’์ด ๋ˆ„๋ฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 

 

 

https://velog.io/@minsangk/%EC%BB%A4%EC%84%9C-%EA%B8%B0%EB%B0%98-%ED%8E%98%EC%9D%B4%EC%A7%80%EB%84%A4%EC%9D%B4%EC%85%98-Cursor-based-Pagination-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0

 

์ปค์„œ ๊ธฐ๋ฐ˜ ํŽ˜์ด์ง€๋„ค์ด์…˜ (Cursor-based Pagination) ๊ตฌํ˜„ํ•˜๊ธฐ

์‚ฌ์‹ค ์ฒ˜์Œ์—๋Š” ์ด ์ฃผ์ œ๋กœ ํฌ์ŠคํŠธ๋ฅผ ์“ฐ๋ ค๊ณ  ํ–ˆ๋˜๊ฑด ์•„๋‹ˆ๊ณ  Apollo GraphQL ์—์„œ ์ปค์„œ ๊ธฐ๋ฐ˜ ํŽ˜์ด์ง€๋„ค์ด์…˜ ๊ตฌํ˜„ ์„ ์ฃผ์ œ๋กœ ๊ธ€์„ ์“ฐ๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋ง‰์ƒ ์ฐพ์•„๋ณด๋‹ˆ ๋ฐฑ์—”๋“œ-ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ํ•จ๊ป˜ ๊ณ ๋ ค

velog.io

 

 

 

 

 

ํ•˜์ง€๋งŒ ๋ชจ๋“  ๋Œ€์‹  ์ด ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ์ „์ฒด ํŽ˜์ด์ง€ ๊ฐฏ์ˆ˜๋ฅผ ์กฐํšŒํ•  ์ˆ˜๋Š” ์—†๊ฒŒ ๋œ๋‹ค. ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” ์„œ๋น„์Šค์—์„œ๋Š” ์ฃผ๋กœ ๋“œ๋ž˜๊ทธ ์•ก์…˜์œผ๋กœ๋งŒ ๋‹ค์Œ ํŽ˜์ด์ง€๋ฅผ ํƒ์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. 

 

pagination navigation์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

 

 

 

 

 

 

 

3. ์ƒ์šฉํ™”์ค‘์ธ ์„œ๋น„์Šค๋“ค์˜ ํŽ˜์ด์ง• ๋ฐฉ์‹


์‹ค์ œ ์„œ๋น„์Šค์ค‘์ธ ๊ธฐ์—…๋“ค์€ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ด ์ฐพ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๊ตฌ๊ธ€, ๋„ทํ”Œ๋ฆญ์Šค, ์ธ์Šคํƒ€๊ทธ๋žจ, ํŽ˜์ด์Šค๋ถ ๋“ฑ. ์ด๋ฅผ ํ•˜๋‚˜์”ฉ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

 

 

3-1. ๊ตฌ๊ธ€ 

2022๋…„ 3์›” ๊ธฐ์ค€ ๊ตฌ๊ธ€์— messi๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ฉด ์•ฝ 2์–ต 8์ฒœ 500๋งŒ๊ฑด์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฒ€์ƒ‰๋ฉ๋‹ˆ๋‹ค. ํ•œ ํŽ˜์ด์ง€์— 10๊ฐœ์”ฉ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์—ฌ์ค€๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ์•ฝ 2์ฒœ 8500๋งŒ๊ฐœ์˜ ํŽ˜์ด์ง€๊ฐ€ ์กด์žฌํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์ด๋ฅผ ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ๊ฒ€์ƒ‰ํ•˜๋ฉด ๋งค์šฐ ๋Š๋ฆฐ. ๋ฌผ๋ก  ๊ตฌ๊ธ€ ์ž์ฒด ๊ฒ€์ƒ‰ ์‹œ์Šคํ…œ์ด ์กด์žฌํ•˜๊ฒ ์ง€๋งŒ 

 

 

\

 

 

๊ตฌ๊ธ€์€ ์ž์ฒด ๊ฒ€์ƒ‰ ์—”์ง„์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ๊ฒ€์ƒ‰ ์กฐ๊ฑด์ด ๋งค๋ฒˆ ๋ฐ”๋€Œ๊ธฐ ๋•Œ๋ฌธ์— ์„ธ๋ถ€ ๊ทœ์น™์„ ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ์€ ํฐ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ ํ˜„์žฌ ์‚ฌ์ง„์˜ ๊ฒ€์ƒ‰ ๊ธฐ์ค€์—์„œ ํŽ˜์ด์ง€๋ฅผ ๋ณด๋ฉด 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋Š”๋ฐ 10์€ 2๋ฒˆ, 20์€ 3๋ฒˆ, 30์€ 4๋ฒˆ ํŽ˜์ด์ง€๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

 

 

 

 

 

 

 

์Šฌ๋ž™ API๋Š” Json ์‘๋‹ต๊ฐ’์— ๋‹ค์Œ ์กฐํšŒ์— ์‚ฌ์šฉ๋  cursor ์œ„์น˜๋ฅผ ๋‚ด๋ ค์ฃผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 

 

users.list API method

Lists all users in a Slack team.

api.slack.com

{
    "ok": true,
    "members": [
        {
            "id": "USLACKBOT",
            "team_id": "T0G9PQBBK",
            "name": "slackbot",
            ...
        },
        {
            "id": "W07QCRPA4",
            "team_id": "T0G9PQBBK",
            "name": "glinda",
            ...
        }
    ],
    "cache_ts": 1498777272,
    "response_metadata": {
        "next_cursor": "dXNlcjpXMDdRQ1JQQTQ="
    }
}

 

 

 

https://api.slack.com/methods/users.list

 

users.list API method

Lists all users in a Slack team.

api.slack.com



 

 

 

3-2. ์นด์นด์˜ค

์นด์นด์˜ค์˜ ๊ฒฝ์šฐ ๊ธฐ๋ณธ์ ์œผ๋กœ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒ€์ƒ‰ ์กฐ๊ฑด์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. 

 

 

 

 

 

์นด์นด์˜ค

https://developers.kakao.com/tool/rest-api/open/get/v2-search-web

 

 

 

 

 

์นด์นด์˜ค ๋˜ํ•œ ์ตœ๋Œ€ ๊ฒ€์ƒ‰ ํŽ˜์ด์ง€๋ฅผ ์ œํ•œํ•ด ๋†“์•˜๋Š”๋ฐ์š”, 51ํŽ˜์ด์ง€๊ฐ€ ๋˜๋ฉด ๋” ์ด์ƒ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 

 

 

 

 

 

 

 

 

4. Conclusion


์ „ํ†ต์ ์ธ ํŽ˜์ด์ง€๋„ค์ด์…˜ ๋ฐฉ์‹์€ ์˜ค๋žซ๋™์•ˆ ๋„คํŠธ์›Œํฌ ๋‚ญ๋น„๋ฅผ ์ค„์—ฌ์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ๋‹ด๋‹นํ•ด์™”๋‹ค. ํ•˜์ง€๋งŒ ์‹ค์‹œ๊ฐ„์„ฑ์„ ๋„๋Š” SNS ์„œ๋น„์Šค์˜ ๋“ฑ์žฅ์œผ๋กœ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ž์ฃผ ์ˆ˜์ •/์ƒ์„ฑ/์‚ญ์ œ๋˜๋Š” ์ƒํ™ฉ์ด ๋Š˜์–ด๋‚˜์ž ์ค‘๋ณต ์ „์†ก์˜ ๊ฐ€๋Šฅ์„ฑ์ด ์ผœ์กŒ๋‹ค. ํŠธ์œ„ํ„ฐ๋Š” ์ปค์„œ ๊ธฐ๋ฐ˜ ํŽ˜์ด์ง€๋„ค์ด์…˜์„ ํ†ตํ•ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ณ€ํ™”ํ•˜๋Š” ํƒ€์ž„๋ผ์ธ ์ƒ์—์„œ ๋ฆฌ์†Œ์Šค์˜ ์ค‘๋ณต ์ „์†ก์„ ํšจ๊ณผ์ ์œผ๋กœ ๋ง‰์•„๋ƒˆ๋‹ค.

 

 

 

 

 

 

5. Reference


๊น€๋ฏผ์ƒ CTO๋‹˜      ์ปค์„œ ๊ธฐ๋ฐ˜ ํŽ˜์ด์ง€๋„ค์ด์…˜
Markus Winand      OFFSET is bad for skipping previous rows
   
   
   

 

 

How to Implement Cursor Pagination Like a Pro

So you’ve decided to implement cursor pagination in your website. Well, you’ve come to the right place! (If you’re not entirely convinced…

medium.com

https://mariadb.com/kb/en/pagination-optimization/

 

Pagination Optimization

Pagination, not with OFFSET, LIMIT

mariadb.com

   
   
   
   
     ใ…‡ใ„นใ…

๋Œ“๊ธ€