group by 와 max 속도차이 0 4 718

by 도농동미키마우스 [SQL Query] [2018.05.24 14:39:24]


GROUP BY 쿼리를 사용할 때 내부적으로 

MAX 속도 차이가 나는지 궁금합니다.

실행계획은 동일한 것 같아서요

* 테이블 : 상품 테이블 , 매출테이블

1.

SELECT  A.매장, A.상품, B.상품명, A.거래처, SUM(A.매출) AS 매출

  FROM 매출테이블 A

 INNER

  JOIN 상품테이블 B

    ON B.상품 = A.상품

GROUP BY A.매장, A.상품, B.상품명, A.거래처

;

 

2. 

SELECT  A.매장, A.상품, MAX(B.상품명) AS 상품명, MAX(A.거래처) AS 거래처, SUM(매출) AS 매출

  FROM 매출테이블 A

INNER

 JOIN 상품테이블 B

   ON B.상품 = A.상품

GROUP BY A.매장, A.상품

by 아발란체 [2018.05.24 16:07:20]

예측 실행 계획이 아닌

실측 실행 계획 확인 방법 검색하셔서 

디스크 I/O에 일어나는 것들을 실제 보면 보다 확연히 구분이 될 것 같습니다.

근데 실측 돌려도 대충 일량 비슷하게 나올 것 같습니다.

걸린 속도와 대상 건수 총량 정도 정보 등 좀 더 구체적 정보를 주시면 구체적으로 답을 주시는 분들에게 보다 참고가 될 것 같습니다.

 


by 마농 [2018.05.24 17:15:17]

내부적인 성능차이보다는 두 쿼리가 같은 쿼리인지가 더 중요하다고 생각합니다.
상품이 주 키이고 나머지는 주키를 설명하는 보조적인 속성들이라면 결과가 동일하겠네요.
그런데 같은 상품이라도 거래처가 다를 수 있지 않나요?
그렇다면 두 쿼리는 같은 쿼리로 보기 힘듭니다.
그리고 매출테이블 하나만 조회하나요?
상품명이 매출테이블에 있을 것 같지 않은데요?
상품명은 상품 테이블에 있지 않나요?


by 도농동미키마우스 [2018.05.24 17:23:12]

네 실제 테이블은 아니고 

동일한 쿼리, 동일한 데이터를 뽑는다는 가정하에 질문드렸어요.

보통 GROUP 함수인 MAX는 속도가 느리다고 알고 있으니 

MAX를 안쓰고 GROUP BY를 쓰는 경우가 있는데

진짜로 속도나 성능상 차이가 있는지 궁금해서요...!!!


by 마농 [2018.05.24 17:31:39]

"MAX는 속도가 느리다고 알고 있으니 MAX를 안쓰고 GROUP BY를 쓰는 경우"
잘못된 상식입니다.
GROUP BY 나 MAX 는 성능을 위해 쓰는게 아니라 필요에 의해서 써야 합니다.
GROUP BY 를 이용한 집계에 대한 정확한 이해를 한 뒤에
두 쿼리가 정확하게 동일한 쿼리라는 것을 명확하게 인지하고
두 쿼리 중 어느 쿼리를 선택할지는 코딩 스타일 선호도라고 생각합니다.
성능은 중요한 요소이지만 정확한 결과는 기본입니다.
중요도는 비중(더 중요하고 덜 중요하고)이 있지만, 기본은 반드시 지켜야 합니다.
기본이 지켜지지 않은 상태에서는 성능은 무의미합니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입