반응형
DISTINCT와 GROUP BY 는 쿼리 선택 컬럼의 유니크 값들을 리턴하는 쿼리 구문입니다.
동일한 결과를 가져오기만 쓰다보면 미세한 차이를 발견하게 됩니다.
DISTINCT는 테이블에 저장된 순서 그대로를 가져오고, GROUP BY는 선택 컬럼을 기준으로 정렬된(정순) 결과를 가져옵니다.
즉,
GROUP BY 는 DISTINCT + ORDER BY 컬럼명 ASC
와 동일합니다.
예를 들어
1. select distinct p_name from product
2. select p_name from product group by p_name
이 두 쿼리는 다른 타입의 DB에서는 정렬되지 않는 동일한 결과를 가져오지만
MySQL/MariaDB 에서는 2번 쿼리는 왼쪽 결과처럼 정순으로 정렬된 결과를 가져옵니다.
GROUP BY 는 내부적으로 DISTINCT를 실행하면서 ORDER BY를 추가적으로 실행합니다.
연산 코스트를 더 많이 소모한다는 뜻이고, 당연하게도 내부 정렬이 없는 DISTINCT가 더 속도가 빠릅니다.
물론 작은 테이블에서는 별차이 없습니다.
백만단위 레코드나 복잡한 쿼리가 되야 좀 차이가 나는게 보입니다.
정렬 과정이 필요 없다면 DISTINCT 를 사용하는 것이 조금이나마 빠른 실행 결과를 얻을 수 있습니다.
반응형
'서버·DB·C#' 카테고리의 다른 글
C# 엑셀 확장자별로 OLEDB 연결 설정을 구분해 엑셀 데이터 읽기 (0) | 2019.12.03 |
---|---|
구글 클라우드 플랫폼으로 무료 워드프레스 블로그를 운영해보자. - 1/4 웹호스팅 가상서버 생성 (10) | 2019.12.03 |
설치형 블로그를 위한 워드프레스 웹호스팅 찾기 (2) | 2019.11.28 |
MSSQL 테이블 데이터를 .sql 스크립트로 MySQL로 가져오기 (0) | 2019.11.28 |
어떤 블로그 서비스를 이용할 것인가? (5) | 2019.11.28 |
MySQL GROUP BY 보다는 DISTINCT 가 더 빠르다. (0) | 2019.11.26 |
MSSQL 쿼리 결과를 하나의 문자열, 또는 JSON으로 가져오기 (0) | 2019.11.25 |
MySQL 쿼리 결과를 하나의 문자열, 또는 JSON으로 가져오기 (0) | 2019.11.25 |
MySQL DateTime 포맷과 문자열 날짜값의 비교, 그리고 date_format() 날짜 포매팅 (0) | 2019.11.24 |
Comments