SQL
[DB Optimization#10] 한 번에 너무 많은 데이터를 조회하지 마세요
j.d
2025. 4. 17. 14:52
너무 많은 데이터를 한 번에 조회하면 어떻게 될까?
데이터베이스에서 데이터를 빠르게 조회하기 위해 많은 노력을 들이지만, 기본적으로 꼭 먼저 점검해야 할 것이 하나 있습니다. 바로 다음과 같은 질문입니다.
"이 쿼리에서 한 번에 너무 많은 데이터를 조회하고 있는 건 아닐까?"
실제로 많은 데이터가 들어 있는 테이블에서 한 번에 수천, 수만 건의 데이터를 불러오면 성능은 금방 저하되며, 사용자 경험도 떨어지게 됩니다.
실습: 조회 데이터 개수에 따른 성능 차이
1. 실습 테이블 생성
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
age INT
);
SET SESSION cte_max_recursion_depth = 1000000;
INSERT INTO users (name, age)
WITH RECURSIVE cte (n) AS (
SELECT 1
UNION ALL
SELECT n + 1 FROM cte WHERE n < 1000000
)
SELECT
CONCAT('User', LPAD(n, 7, '0')),
FLOOR(1 + RAND() * 1000)
FROM cte;
2. 데이터 조회
SELECT *
FROM users
LIMIT 10000; --10,000개 조회
SELECT *
FROM users
LIMIT 10; --10개 조회
측정 결과 10개만 조회했을 때 0.026으로 약 5배 빠른 성능을 보여주고 있습니다.
실무에서도 데이터를 "조금씩" 가져오는 이유
페이스북, 인스타그램, 블로그, 뉴스 사이트 등 많은 서비스들은 스크롤을 내리거나 페이지를 넘길 때마다 데이터를 점진적으로 불러옵니다.
이런 방식은 단순히 사용자 인터페이스(UI)를 위한 것이 아닙니다.
성능 때문입니다.
- 한 번에 10만 건을 불러오는 것보다
- 필요한 순간에 10~20건씩 불러오는 것이 훨씬 빠르고 안정적입니다.
이러한 지연 로딩 방식(lazy loading), 페이지네이션(pagination)은 모두 데이터 조회량을 제한하기 위한 전략입니다.