inflearn logo
강의

Course

Instructor

Young-han Kim's Introduction to Practical Databases - SQL First Steps for All IT Professionals (Step-by-Step from SQL)

GROUP BY - Grouping

GROUP BY 강의 중 ORDER BY에 관한 질문

91

작성자 없음

0 asked

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
46. GROUP BY - 그룹으로 묶기 강의 중 그룹으로 묶은 뒤 집계 함수를 사용한 컬럼을 기준으로 정렬하는 내용에 질문이 있습니다.

ORDER BY에 총 구매 금액 이라는 alias로 지정한 컬럼명을 사용해도 되고, sum(price * quantity)로 SELECT 절에서 사용한 집계함수를 다시 사용해서 정렬해도 된다고 설명해주셨습니다.

만약 집계함수를 사용했을 땐 계산을 또 해야하고, 컬럼명을 사용했을 땐 컬럼을 참조만 한다면 성능에 차이가 생기지 않을까라는 생각이 들었습니다.

ORDER BY 절에 집계함수를 사용하는 것과 컬럼명을 사용하는 것의 동작 원리가 같은지, 성능상의 차이가 있는지 궁금합니다.

sql mysql dbms/rdbms SQLD

Answer 1

1

communityai8509

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

GROUP BY 강의에서 집계 함수를 사용한 컬럼으로 정렬할 때 ORDER BY에서 alias를 사용하는 방법과 직접 다시 집계 함수를 사용하는 방법의 성능 차이에 대한 질문을 주셨습니다.

  1. 대부분의 RDBMS에서의 동작 원리:

    • ORDER BY 절에서 컬럼명을 사용할 때, 대부분의 RDBMS는 SELECT 절에서 이미 계산된 집계 함수 결과를 사용합니다. 이는 한번 계산된 결과를 재사용하는 방식이라 별도의 계산은 필요하지 않습니다.
  2. 성능 차이:

    • 실제로 대부분의 RDBMS는 ORDER BY에서 집계 함수를 직접 사용하는 경우에도 내부적으로 한 번 계산된 결과를 재사용하기 때문에, 성능 차이가 거의 없도록 최적화되어 있습니다.
    • 하지만, 내부적으로 최적화가 잘 되어 있는 경우가 많아 보통 성능 차이를 느끼기는 어려울 것입니다. 물론, 최적화가 안 되어 있는 환경에서는 차이가 생길 수 있지만, 이는 드문 사례입니다.
  3. 가독성 측면:

    • 성능 차이가 미미하다면, 읽기 쉽고 유지보수가 용이한 코드를 작성하는 것이 좋습니다. 따라서 컬럼명을 사용하는 것이 더 명확하고 직관적일 수 있습니다.

관련 질문의 유사한 답변으로는 다음을 참고해 보시기 바랍니다:
- Seatest: 성능 최적화에서의 Aggregate Function 사용법

위의 설명을 통해서 성능 측면에서도 차이가 없는 경우가 대부분인 것을 알 수 있으며, 가독성 면에서 alias를 활용하는 것이 코드의 유지보수나 관리에 더 적합할 수 있습니다.

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

교재 p.31 실행순서 오류?

0

108

2

sql서버가 켜지면 다시 꺼짐

0

108

2

INSERT INTO 관련 질문

0

86

1

MySQL 설치 질문 드립니다.

0

144

2

mysql화면 오류

0

90

1

NOT NULL과 DEFAULT 조건의 사용법

0

105

1

mysql 버전

0

94

1

정말 별 거 아니긴 한데요

0

135

2

논리적 실행 순서에서 SELECT 설명 질문

0

87

2

primary key는 테이블 당 하나만 존재할 수 있다?

0

109

1

노트앱 어떤 거 쓰시나요?

0

145

1

drop과 truncate

0

87

1

db 공부관련 질문

0

128

2

GROUP BY 에서 ORDER BY 를 사용했을 때 오류

0

114

1

오타 제보

0

82

1

7.SQL - 집계와 그룹핑 : 문제와 풀이에서 2번문제

0

67

1

문제5번 - 함수 코드 중복 방지를 위한 방법 중 서브쿼리와 CTE의 차이

0

120

1

order 테이블 생성이 안되네요

0

121

4

ifnull()과 default 차이

0

95

1

help me 도와주세요 MySQL 설치 pls 급해요

0

149

2

DB 설계편 예상 출시일

0

154

2

강의 내용

0

106

1

오류 원인

1

101

3

개발자 취준

0

244

2