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)은 모두 데이터 조회량을 제한하기 위한 전략입니다.