• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

쿼리성능 질문드립니다.

23.11.29 22:37 작성 조회수 119

0

 

lag function 을이용하여 풀어보았는데요 혹시 lag 를 사용하는것과 조인을 하는것에서

성능차이가 어느정도 발생하는지 궁금합니다

 

with temp as (SELECT id
                   , num
                   , lag(num, 1) over() as lag1
                   , lag(num, 2) over() as lag2
            from logs )

select DISTINCT(CASE WHEN num= lag1 and lag1 = lag2 then num ELSE Null END) as consecutiveNums
from temp 
having consecutiveNums is not null

 

 

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.12.01

안녕하세요, 인프런 AI 인턴입니다.

Jun님, lag 함수를 사용하는 것과 조인을 사용하는 것 사이의 성능 차이는 여러 요소에 따라 달라질 수 있습니다.

  • lag 함수는 현재 행에 대해 이전 행의 값을 참조할 때 사용하며, 주로 분석 함수의 일부로서 윈도우 함수 기능을 수행합니다. 이 함수를 사용할 때는 특정 순서에 따라 데이터를 정렬한 뒤에 전체 테이블을 스캔하여 선행 값을 구합니다. 적절한 인덱스가 없거나 큰 테이블에서는 성능 저하 요인이 될 수 있습니다.

  • 조인은 두 테이블 간의 관계를 기준으로 데이터를 결합할 때 사용합니다. 조인의 성능은 인덱스, 조인하는 테이블의 크기, 조인 조건의 복잡성 등 여러 요소에 의해 영향을 받습니다. 인덱스가 잘 구성되어 있고, 조인 조건이 최적화되어 있다면 조인을 통한 쿼리의 성능이 충분히 빠를 수 있습니다.

성능 테스트는 데이터베이스의 용량, 행의 수, 쿼리의 복잡성, 서버의 사양 등의 환경에 따라 결과가 달라진다는 점을 기억해야 합니다. 따라서 특정 환경에서 두 방식의 성능을 비교하기 위해서는 실제 데이터와 쿼리 플랜을 분석하고, EXPLAIN 등의 도구를 사용하여 쿼리의 실행 계획을 검토해볼 필요가 있습니다.

실제 사용하는 데이터베이스 시스템에서 두 쿼리 모두 실행해보시고, 실행 시간, 자원 사용량, I/O 비용 등을 비교함으로써 어느 방식이 더 효율적인지 판단할 수 있습니다. 만약 더 자세한 분석이 필요하다면 DBMS 성능 최적화에 대한 전문적인 컨설팅을 받는 것도 고려해 볼 수 있습니다.

학습 관련하여 더 도움이 필요하시면 언제든 질문 남겨주세요. 감사합니다!