GROUP BY vs DISTINCT

DISTINCT

  • DISTINCT는 중복되는 데이터 제거를 위해 주로 UNIQUE한 Column이나 Tuple(Record)를 조회하는 경우에 사용한다.

  • 정렬(Filesort)하지 않고 결과를 출력해, GROUP BY에 비해 성능이 빠르다.

  • DISTINCT는 내부적으로 GROUP BY와 동일한 코드를 사용

  • DISTINCT는 "Grouping" 작업만, GROUP BY의 "Grouping" + "정렬" 작업

  • Example

    // column1을 중복 제거 출력
    SELECT DISTINCT column1
    FROM table;

GROUP BY

  • GROUP BY는 데이터를 Grouping해서, 집계 함수를 사용하고 그 결과를 정렬해 가져오는 경우에 사용한다.
  • 주로 집계 함수 사용을 위해 사용한다.
  • Grouping한 Column의 데이터만 가져오기때문에 출력 결과는 DISTINCT와 비슷하다.
  • 하지만 DISTINCT의 출력 결과는 정렬된 결과가 아니지만, GROUP BY는 정렬된 결과를 보내준다.
  • 정렬(Filesrot)작업을 하기 때문에 DISTINCT보다 성능이 느리다

!!DISTINCT는 함수가 아니다.

DISTINCT는 함수가 아니라 키워드이다.
DISTINCT를 마치 함수인 것처럼 괄호를 사용하여 아래와 같은 상황에 사용하게 되면 결과를 출력할 수 없다.

// column1 컬럼은 unique 값, column2는 전체 값 출력을 원하지만
// column2 전체 값을 출력할 수 없다.
SELECT DISTINCT(column1), column2 
FROM table;

SELECT절에 DISTINCT라는 키워드가 있으면, MySQL은 SELECT되는 모든 Column(Tuple)들에 대해서 DISTINCT를 적용해서 결과를 출력한다.

참고 : https://velog.io/@gillog/MySQL-DISTINCT-GROUP-BY

좋은 웹페이지 즐겨찾기