Fork me on GitHub

Other articles


  1. Error Code: 1055

    Published: Mon 08 January 2018
    Updated: Mon 08 January 2018
    By Yunseop Song

    In mysql.

    Expression #2 of SELECT list is not in GROUP BY clause ...

    이런 에러가 날 때가 있다.

    MySQL5.7에서 @@sql_modeONLY_FULL_GROUP_BY,NO_AUTO_CREATE_USER,STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION로 기본값이 셋팅되어 있기 때문이다.

    ONLY_FULL_GROUP_BY

    SELECT, HAVING, ORDER BY 목록에 있는 컬럼 중 GROUP BY에 없어서 집계할 수 없는 컴럼이 있다면 그 쿼리를 실행하지 …

    read more

    There are comments.

  2. GROUP BY 최적화

    Published: Thu 30 November 2017
    Updated: Fri 01 December 2017
    By Yunseop Song

    In mysql.

    GROUP BY 절을 보통 테이블을 스캔하고 결과를 임시 테이블에 넣어서 집계하는 과정을 거친다. 그래서 데이터 양에 따라서 매우매우 느린 쿼리가 될 수도 있다. 그래도 인덱스를 잘 설정한다면 임시 테이블을 생성하지 않고 빠르게 데이터를 가져올 수 있다.

    관건은 GROUP BY 에 있는 모든 컬럼들이 바라보는 Index가 동일하고 순서도 맞아야 한다.

    두가지 …

    read more

    There are comments.

  3. Index를 타지 않는 쿼리

    Published: Thu 30 November 2017
    Updated: Sun 10 December 2017
    By Yunseop Song

    In mysql.

    인덱스 컬럼을 변형하는 경우

    SELECT * FROM `table` WHERE DATE_FORMAT(`date`, '%Y%m%d') = '20171122';
    

    컬럼을 바꾸기보다는 값을 바꿔주자.

    SELECT * FROM `table` WHERE `date` = STR_TO_DATE('20171122', '%Y%m%d');
    

    내부적으로 데이터 타입 전환이 이뤄지는 경우

    SELECT * FROM `table` WHERE `date` = '20171122';
    

    데이터 타입 전환이 이루어지면 위처럼 컬럼이 변형되는 것과 비슷한 매커니즘으로 …

    read more

    There are comments.

Page 1 / 3 »

links

social