Inflearn brand logo image

인프런 커뮤니티 질문&답변

Anfield님의 프로필 이미지
Anfield

작성한 질문수

업무에 바로 쓰는 SQL 튜닝

7-4. 소계/통계를 위한 쿼리를 OO하는 나쁜 SQL

rollup mariadb 11 ver 기준

작성

·

74

0

SELECT REGION, GATE, COUNT(*) AS cnt

FROM ENTRY_RECORD

WHERE REGION <> ''

GROUP BY REGION, GATE WITH ROLLUP; -- 414ms

 

ROLLUP 사용법이 달라서 구글이나 지피티에 서칭을 해봤습니다.

 

저처럼 안 되시는 분이 많을 거 같아서 올립니다.

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.
Anfield님이 언급하신 내용은 MariaDB에서 ROLLUP 기능을 사용하는 SQL 쿼리와 관련된 것입니다. ROLLUP은 여러 단계의 집계 결과를 제공하여, 점진적으로 세부 데이터를 축소해 나가는 방식으로 사용됩니다. 쿼리의 예제는 특정 REGIONGATE에 대한 데이터의 수를 집계하면서, 그 위에 상위 집계 결과를 추가로 가져오는 방식입니다.

MariaDB에서 ROLLUP을 사용할 때 다음과 같은 사항을 고려해보세요:
- GROUP BY 절에서는 일반적으로 ROLLUP의 적용 대상이 되는 열 리스트를 제공하게 됩니다.
- 주의할 점은 ROLLUP을 사용할 때 최종 집계 단계에서는 모든 다른 그룹에 대한 상위 집계 값(예: 전체 합)이 포함될 수 있습니다.

사용 사례에 따라 성능이나 결과가 다를 수 있으며, 쿼리 작성 시 항상 결과를 충분히 검토하는 것이 중요합니다.

아래는 Anfield님이 제공한 쿼리와 그 의미입니다:

SELECT REGION, GATE, COUNT(*) AS _cnt_
FROM ENTRY_RECORD
WHERE REGION <> ''
GROUP BY REGION, GATE WITH ROLLUP;

이 쿼리는 REGIONGATE별로 매칭되지 않는 레코드를 필터링하여 카운트하고, ROLLUP을 사용하여 추가적인 집계 합계를 제공합니다. 이때, 쿼리의 실행 시간이 414ms로 언급하셨는데, 이는 데이터베이스 최적화 또는 서버 성능에 따라 다르게 나올 수 있습니다.

추가 정보가 필요하시다면 MariaDB 공식 문서나 SQL에 관련된 커뮤니티 포럼에서 더 많은 도움을 받으실 수 있습니다. 이외에도 Stack Overflow 같은 곳에서 유사한 경험을 공유하는 사용자들의 피드백을 찾을 수 있습니다.

Anfield님의 프로필 이미지
Anfield

작성한 질문수

질문하기