๐ ์ฟผ๋ฆฌ ์ฑ๋ฅ ๊ฐ์ : No Offset์ ํ์ฉํ ํ์ด์ง๋ค์ด์
๊ฐ์
๋๋์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฟผ๋ฆฌ ์ฑ๋ฅ์ ๊ฐ์ ํ๋ ๊ฒ์ด ์ค์ํ๋ค๊ณ ๋ค ํ๋ค. ์ต๊ทผ ํ๋ก์ ํธ์์๋ ํ์ด์ง๋ค์ด์ ์ ์ ์ฉํ์ฌ ์ฑ๋ฅ์ ์ต์ ํํ๊ธฐ๋ก ํ๋ค. ์ ํต์ ์ธ ํ์ด์ง๋ค์ด์ ๋ฐฉ์ ๋์ โNo Offsetโ ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ์ ์ฑ๋ฅ์ ํฅ์์ํค๊ณ ์ ํ๋ค.
๊ธฐ์กด ํ์ด์ง๋ค์ด์ ๋ฐฉ์
๊ธฐ์กด ๋ฐฉ์์ OFFSET๊ณผ LIMIT์ ์ฌ์ฉํ๋ ํ์ด์ง๋ค์ด์ ๋ฐฉ๋ฒ์ด์๋ค. ๋ฐ์ดํฐ๊ฐ ๋ง์ ๊ฒฝ์ฐ, OFFSET์ ์ฆ๊ฐ์ํค๋ฉด์ ์ฑ๋ฅ์ด ์ ํ๋๋ ๋ฌธ์ ๊ฐ ์์๋ค. ์๋ฅผ ๋ค์ด, ๋ค์๊ณผ ๊ฐ์ ์ฟผ๋ฆฌ๋ฅผ ๋ณด์:
SELECT *
FROM data_table
ORDER BY id ASC
OFFSET #{offset} ROWS FETCH NEXT #{limit} ROWS ONLY;
์ด ์ฟผ๋ฆฌ๋ ํ์ด์ง๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค OFFSET์ ์ฆ๊ฐ์์ผ์ผ ํ๋ฉฐ, ๋ฐ์ดํฐ๊ฐ ๋ง์์ง์๋ก ์ฑ๋ฅ์ด ์ ํ๋๋ค. OFFSET์ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ค์บํด์ผ ํ ๋ ์ฝ๋ ์๊ฐ ๋ง์์ ธ, ์ฑ๋ฅ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
No Offset ๋ฐฉ์ ์ ์ฉ
No Offset ๊ธฐ๋ฒ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ OFFSET์ ์ฌ์ฉํ์ง ์๊ณ , ๋ง์ง๋ง์ผ๋ก ์กฐํ๋ ๋ ์ฝ๋์ ID๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ค์ ๋ ์ฝ๋๋ฅผ ์กฐํํ๋ ๋ฐฉ์์ด๋ค. ์ด๋ฅผ ํตํด ์ฟผ๋ฆฌ ์ฑ๋ฅ์ ๊ฐ์ ํ ์ ์๋ค. ๊ตฌํ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค:
SELECT *
FROM data_table
WHERE id > #{lastId}
ORDER BY id ASC
FETCH NEXT #{limit} ROWS ONLY;
- #{lastId}: ์ด์ ํ์ด์ง์์ ๋ง์ง๋ง์ผ๋ก ์กฐํ๋ ๋ ์ฝ๋์ ID.
- #{limit}: ํ ํ์ด์ง์ ํ์ํ ๋ ์ฝ๋ ์. ์ด ์ฟผ๋ฆฌ๋ OFFSET์ ์ฌ์ฉํ์ง ์์ผ๋ฉฐ, ์ธ๋ฑ์ค๋ฅผ ํจ์จ์ ์ผ๋ก ํ์ฉํ๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ id๊ฐ #{lastId}๋ณด๋ค ํฐ ๋ ์ฝ๋๋ง ์กฐํํ๋ฉด ๋๋ฏ๋ก ์ฑ๋ฅ์ด ๊ฐ์ ๋๋ค.
๋ฐ๋ผ์ ์ ํ๋ฆฌ์ผ์ด์ ๋จ์์๋ ์ถ๊ฐ๋ก lastId๋ฅผ ์ ๋ฌํ๋๋ก ๊ตฌํํ๋ค.