SQL에서 ORDER BY는 결과를 보기 좋게 정렬해주는 기능이지만,
데이터를 정렬하는 연산이 추가되기 때문에 성능 저하의 원인이 될 수 있습니다.
• ORDER BY는 데이터를 한 번에 다 읽어서, 순서를 매기고, 다시 배열하는 과정을 거칩니다.
• 데이터 양이 많아질수록, 이 정렬 작업 때문에 쿼리 속도가 느려집니다.
✔️ 인덱스를 활용하세요.
CREATE INDEX idx_orders_created_at ON orders(created_at);
• 인덱스는 컬럼 값의 정렬된 순서를 별도의 구조로 관리합니다. 그래서 ORDER BY를 할 때, 테이블 데이터를 직접 정렬하지 않고, 인덱스를 따라 빠르게 정렬 결과를 가져올 수 있습니다.
✔️ 불필요한 ORDER BY는 제거
• 필요할 때만 쓰세요.
✔️ LIMIT과 함께 사용하기
• ORDER BY created_at LIMIT 10처럼, 상위 n개만 정렬하면 부담이 줄어듭니다.
✔️ ORDER BY는 정렬 연산이 추가되기 때문에, 데이터가 많을수록 성능 저하의 원인이 됩니다.
✔️ 정렬 대상 컬럼에 인덱스를 걸어두면, 정렬 부담을 크게 줄일 수 있습니다.
✔️ LIMIT을 함께 사용하면 정렬 대상 범위를 줄여 성능을 높일 수 있습니다.