inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

김영한의 실전 데이터베이스 - 성능 최적화, 실행 계획과 인덱스 완전 정복

조회 대상 행이 적을 때도 Using filesort 제거를 고려해야 하나요?

55

슝스스

작성한 질문수 5

0

1. 인덱스로 이미 5~8행까지 좁혀진 결과를 정렬하는 경우에도 filesort를 주의해야 하나요?

2. 실무에서 "이 정도면 filesort를 신경 쓰지 않아도 된다"고 판단하는 기준(정렬 대상 행 수, 실행 시간 등)이 있다면 알려주시면 감사하겠습니다.

감사합니다.

sql mysql dbms/rdbms sql-tuning SQLD

답변 2

0

김영한

안녕하세요. 슝스스님

  1. 조회 및 정렬 대상이 5~8행 정도로 적다면 메모리 상에서 마이크로초 단위로 즉시 정렬되므로 `Using filesort`를 신경 쓰지 않으셔도 됩니다.

  2. 이를 지우려고 불필요한 복합 인덱스를 추가하면 오히려 CUD(생성,수정,삭제) 쓰기 성능이 저하되는 부작용이 커집니다.

  3. 실무에서는 정렬 대상이 수천~수십만 건 이상으로 폭증해 디스크 정렬이 발생하거나, 실제 쿼리 응답 속도가 느려질 때를 기준으로 튜닝하시면 됩니다.

감사합니다.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 슝스스님께서 질문하신 Using filesort와 성능 판단 기준에 참고할 만한 기존 답변을 안내드립니다.

조회 대상이 이미 5~8행 정도로 충분히 줄어든 상태라면, Using filesort가 발생하더라도 정렬 비용은 대체로 매우 작습니다. Using filesort는 반드시 디스크를 사용한다는 의미가 아니라, 인덱스 순서가 아닌 별도의 정렬 작업이 수행된다는 의미이므로 실제 실행 시간과 데이터 규모를 함께 확인하는 것이 중요합니다.

반대로 정렬 대상 행이 많거나, 대량 요청이 반복되는 쿼리라면 ORDER BY 조건에 맞는 인덱스를 구성해 filesort를 줄이는 것을 고려할 수 있습니다. 최종 판단은 EXPLAIN 또는 EXPLAIN ANALYZE를 통해 실제 정렬 대상 행 수, 실행 시간, 읽은 행 수, CPU 및 메모리 사용량 등을 측정하는 방식이 적절합니다.

관련 게시글을 참고해 주세요.

  • limit, offset 에서 인덱스 동작
    ORDER BY 컬럼에 인덱스가 있을 때 filesort를 피할 수 있는 방식과, 인덱스가 없거나 정렬 대상이 많을 때의 비용을 설명하고 있습니다.
  • 실무에서 sql 쿼리의 성능 개선
    성능 개선 여부를 판단할 때 실행 시간뿐 아니라 CPU, 메모리 사용량 등을 함께 확인해야 하며, “유의미한 개선”의 기준은 실제 서비스 상황에 따라 달라진다는 내용을 참고할 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

강의 "자료" 관련 문의

0

1

0

최종 과제 제출합니다!

0

12

1

ALL ANY 관련 질문 드립니다

0

17

1

ROLLUP COMPOSITE COLUMN 문의

0

16

1

수료증 제공하나요?

0

33

1

노션링크

0

44

1

PK를 AUTO_INCREMENT UUID를 UNIQUE로 하는것에 대해

0

67

2

pk를 auto increment로 하는것에 대해서

0

57

2

실행 통계2 explain analyze 조인 쿼리

0

65

1

key_length 가 사용되는곳

0

52

1

강의 DB데이터 질문

0

74

1

기타 영역 중 언두로그

0

93

1

실전튜닝 4 질문 - group by 순서와 index 순서

0

70

1

DB 쿼리 최적화 시 DB 처리와 애플리케이션 처리의 기준이 궁금합니다

0

69

1

실무에서의 인덱스 관리 방법이 궁금합니다

0

85

1

복합인덱스 설계 질문

0

138

1

이진 트리 노드

0

82

1

통계정보 갱신 질문

0

119

2

PK 관련하여 궁금한 점이 있어서 질문 드립니다.

0

130

2

탐색을 한번 더 하지 않게 하는 방식 중 어댑티브 해시 방식도 맞는지 궁금 합니다.

0

124

2

컬럼 크기가 대용량인 경우 DB 버퍼 풀에 전부 올라오는지 궁금합니다

0

122

2

실습데이터 ORDERS 생성 시간 질문요...

0

163

3

MySQL 서버구조 쿼리파서 질문 있습니다 !

0

108

1

Postgresql 아키텍처 업데이트

1

134

2