๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
CS/Database

[MySQL] - ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ ORDERS, OFFSET, LIMIT

by ์ฃผ๋ฐœ2 2021. 1. 29.
๋ฐ˜์‘ํ˜•

์•ˆ๋…•ํ•˜์„ธ์š”~ ์ด์ „์— ์šด์˜ํ•˜๋˜ ๋ธ”๋กœ๊ทธ์™€ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” GitHub๊ฐ€ ๋”ฐ๋กœ ์žˆ์Šต๋‹ˆ๋‹ค.

๋„ค์ด๋ฒ„ ๋ธ”๋กœ๊ทธ

GitHub


์ด๋ฒˆ์— ์ •๋ฆฌํ•  ๋‚ด์šฉ์€ MySQL ๊ธฐ์ค€์œผ๋กœ ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ๋ฅผ ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ‚ค์›Œ๋“œ์ธ ORDERS, LIMIT, OFFSET ์ž…๋‹ˆ๋‹ค.

๊ตฌํ˜„์„ ํ•ด ๋ณธ ๊ฒฝํ—˜์ด ๊ฑฐ์˜ ์—†์–ด์„œ ์ข€ ๋‚ฏ์„ค์—ˆ๋„ค์š”.

๋”ฐ๋ผ์„œ ์ด๋ฒˆ์— ํ™•์‹คํžˆ ์ •๋ฆฌํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค !!

 

 

 

โœ” MySQL - ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ(orders, limit, offset)

์ฟผ๋ฆฌ๋ฌธ์„ ํ†ตํ•ด ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ๋ฅผ ํ•ด๋ณผ๊ฑด๋ฐ์š”, ์˜ˆ์ œ์™€ ์ฟผ๋ฆฌ๋ฌธ์„ ํ†ตํ•ด ์–ด๋–ป๊ฒŒ ์ž‘์„ฑํ•˜๋Š”์ง€ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

LIMIT๊ณผ OFFSET์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • LIMIT: ํ–‰์„ ์–ผ๋งˆ๋‚˜ ๊ฐ€์ ธ์˜ฌ์ง€

  • OFFSET: ์–ด๋””์„œ ๋ถ€ํ„ฐ ๊ฐ€์ ธ์˜ฌ์ง€

 

SELECT * FROM ํ…Œ์ด๋ธ”๋ช… ORDERS LIMIT ์ˆซ์ž;

์œ„ ์ฟผ๋ฆฌ๋Š” ์ˆซ์ž ๋งŒํผ์˜ ํ–‰์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

 

 

 

• SELECT * FROM USER orders LIMIT 10;

 

• SELECT * FROM USER orders LIMIT 20;


 

 

 

SELECT * FROM ํ…Œ์ด๋ธ”๋ช… ORDERS LIMIT ์ˆซ์ž(A) OFFSET ์ˆซ์ž(B)

์œ„ ์ฟผ๋ฆฌ๋Š” (B+1) ํ–‰ ๋ถ€ํ„ฐ A ํ–‰ ๋งŒํผ ์ถœ๋ ฅ์„ ํ•ฉ๋‹ˆ๋‹ค.

 

 

 

• SELECT * FROM USER ORDERS LIMIT 10 OFFSET 0;

 

• SELECT * FROM USER ORDERS LIMIT 10 OFFSET 10;

 

 

• SELECT * FROM USER ORDERS LIMIT 20 OFFSET 5;


 

 

 

SELECT * FROM ํ…Œ์ด๋ธ”๋ช… ORDER LIMIT ์ˆซ์ž(A), ์ˆซ์ž(B)

์œ„ ์ฟผ๋ฆฌ๋Š” (A+1)๋ถ€ํ„ฐ B๊ฐœ์˜ ํ–‰์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰, ์ˆซ์ž(A)๊ฐ€ OFFSET ๊ณผ ๋™์ผํ•˜๋‹ค๊ณ  ๋ณด์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

 

 

• SELECT * FROM USER ORDERS LIMIT 0, 10;

 

 

• SELECT * FROM USER ORDERS LIMIT 0, 20;

 

 

 

 

โ€ป OFFSET์€ INDEX๋ฅผ ํƒ€์ง€ ์•Š์œผ๋‹ˆ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ๋• ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์กฐํšŒ๋ฅผ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

// ๊ธฐ์กด ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ ์ฟผ๋ฆฌ
SELECT * FROM ํ…Œ์ด๋ธ”๋ช… LIMIT ์ˆซ์ž(A), ์ˆซ์ž(B)

// ์ธ๋ฑ์Šค๋ฅผ ํƒœ์šฐ๋Š” ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ ์ฟผ๋ฆฌ
SELECT * FROM ํ…Œ์ด๋ธ”๋ช… WHERE ์ˆซ์ž(A) < key LIMIT ์ˆซ์ž(B)

 

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€