안녕하세요~!
평소에 데이터 추출을 하다가 건수가 너무 많아서 데이터는 뽑히는데 툴에서 이 데이터 셋을 그리다가
프로그램이 뻗거나 먹통이 되는 경우가 있는데요.
적당하게 나눠서 뽑기 위해 LIMIT절을 잘 사용하면 좋습니다.
LIMIT 절을 사용해서 50만 건 데이터를 10만 건씩 나눠서 조회하려면, LIMIT과 OFFSET을 조합하면 됩니다.
SELECT *
FROM payments
ORDER BY payment_date -- 또는 적절한 정렬 기준
LIMIT 100000 OFFSET N;
| 회차 | LIMIT | OFFSET | 쿼리 예시 |
| 1회차 | 100000 | 0 | LIMIT 100000 OFFSET 0 |
| 2회차 | 100000 | 100000 | LIMIT 100000 OFFSET 100000 |
| 3회차 | 100000 | 200000 | LIMIT 100000 OFFSET 200000 |
| 4회차 | 100000 | 300000 | LIMIT 100000 OFFSET 300000 |
| 5회차 | 100000 | 400000 | LIMIT 100000 OFFSET 400000 |
SELECT *
FROM payments
WHERE id > 200000 AND id <= 300000
ORDER BY id;
이 방식은 OFFSET 없이도 빠르게 원하는 범위를 가져올 수 있어서 대용량에서 더 효율적입니다.
LIMIT 0,100000 이면 99999번까지 뽑은걸까요?
다음은 LIMIT 100000,100000으로 하면 그다음 10만건 조회인지?
CUBRID에서 LIMIT 절의 구문은 다음과 같습니다:
LIMIT <OFFSET>, <ROW_COUNT>
즉, LIMIT 0, 100000 은 0번째(첫 번째) 행부터 시작해서 100000개를 조회하는 것이고,
LIMIT 100000, 100000 은 100000번째 행부터 100000개를 가져옵니다.
| 쿼리 | 의미 | 조회범위 (0-based index) |
| LIMIT 0, 100000 | 처음부터 10만 개 | 0번 ~ 99,999번 (총 10만 건) |
| LIMIT 100000, 100000 | 그다음 10만 개 | 100,000번 ~ 199,999번 |
| LIMIT 200000, 100000 | 또 그다음 10만 개 | 200,000번 ~ 299,999번 |
| ... | 계속 반복 | ... |
-- 1번째 블록
SELECT * FROM payments
ORDER BY payment_date
LIMIT 0, 100000;
-- 2번째 블록
SELECT * FROM payments
ORDER BY payment_date
LIMIT 100000, 100000;
-- 3번째 블록
SELECT * FROM payments
ORDER BY payment_date
LIMIT 200000, 100000;
| sql 반올림 round() 함수 사용방법은? (0) | 2025.09.14 |
|---|---|
| 쿼리에서 REGEXP 함수 뜻은? (0) | 2025.09.14 |
| sql 쿼리 select 조회할때 컬럼값을 ' ' 작은따옴표로 감싸서 조회하고 싶은데 어떻게 조회해야 할까요? (1) | 2025.08.02 |
| sql 쿼리에서 substring_index 함수 사용하는 방법은? (0) | 2025.07.20 |
| 데이터베이스 테이블 인덱스 생성을 위해 효율적인 기준은? (0) | 2025.07.20 |