group by
-
Real MySQL [7-15] 쿼리 작성 및 최적화 - GROUP BYMySQL 2017. 3. 10. 21:28
본 게시물의 내용과 이미지는 도서 Real MySQL의 내용을 재구성하여 작성되었습니다. 저자, 출판사에 의해 저작권 문제 발생시 게시물이 비공개 될 수 있음을 알립니다. GROUP BY 사용 시 주의사항 쿼리에 GROUP BY가 사용되면 그룹 키(GROUP BY 절에 명시된 칼럼)가 아닌 칼럼은 일반적으로 집합 함수를 감싸서 사용해야 한다. 오라클과 같은 DBMS 에서는 이 규칙을 지키지 않으면 에러가 난다. 하지만 MySQL에서는 그룹 키가 아닌 칼럼이더라도 쿼리에서 집합 함수 없이 그냥 사용할 수 있다. SELECT first_name FROM employees GROUP BY gender; SELECT first_name, last_name, COUNT(*) FROM employees GROUP ..
-
Real MySQL [7-7] 쿼리 작성 및 최적화 - WHERE 절의 인덱스 사용MySQL 2017. 1. 16. 20:27
본 게시물의 내용과 이미지는 도서 Real MySQL의 내용을 재구성하여 작성되었습니다. 저자, 출판사에 의해 저작권 문제 발생시 게시물이 비공개 될 수 있음을 알립니다. SELECT 각 절의 처리순서 포스팅에서 사용된 SELECT 문장이라는 용어는 SQL 전체를 의미한다. SELECT 키워드와 실제 가져올 칼럼을 명시한 부분만 언급할 때는 SELECT 절 이라 표현하겠다. 여기서 절이란 주로 알고 있는 키워드 (SELECT, FROM, JOIN, WHERE, GROUP BY, HAVING, ORDER BY, LIMIT)와 그 뒤에 기술된 표현식을 묶어서 말한다. SELECT s.emp_no COUNT(DISTINCT e.first_name) AS cnt FROM salaries s INNER JOIN ..
-
Real MySQL [6-8] 실행계획 - GROUP BYMySQL 2016. 12. 13. 23:29
본 게시물의 내용과 이미지는 도서 Real MySQL의 내용을 재구성하여 작성되었습니다. 저자, 출판사에 의해 저작권 문제 발생시 게시물이 비공개 될 수 있음을 알립니다. GROUP BY 처리 GROUP BY 또한 ORDER BY와 같이 쿼리가 스트리밍된 처리를 할 수 없게 하는 요소 중 하나다. GROUP BY 절이 있는 쿼리에서는 HAVING 절을 사용할 수 있는데 HAVING 절은 GROUP BY 결과에 대해 필터링 역할을 수행한다. 일반적으로 GROUP BY 처리 결과는 임시 테이블이나 버퍼에 존재하는 값을 필터링하는 역할을 수행한다. GROUP BY 에 사용된 조건은 인덱스를 사용해서 처리될 수 없으므로 HAVING 절을 튜닝하려고 인덱스를 생성하거나 다른 방법을 고민할 필요가 없다. GROUP..