IT/DBMS 공통
MySQL 속도 개선 TIP
최고영회
2020. 9. 24. 14:15
728x90
반응형
SMALL
1. WHERE 절에서 사용하는 컬럼은 index 를 주자.
- 모두 index를 줄 수는 없으나 모든 쿼리에서 동일하게 사용하는 조건이 있다면
- 또는 자주 사용하는 where 조건이 있다면 해당 컬럼은 index를 줘도 좋을지 고민해 보자.
2. 인덱스 추가한 date 컬럼 사용 시 주의점
- where 조건문의 왼쪽은 인덱스 대상이 아니기 때문에 where date_format(date) between ? and ? 하면
- 왼쪽의 date_format(date) 부분이 비효율적으로 동작한다. (인덱싱 되지 않는다.)
- 유사건으로 사내 제품에서 trim(date_column)으로 하고 있는 경우가 발견되어 조치 했다.
3. between 보다는 >= <= 를 사용
- 별 차이는 없어보이지만 어쨌든 >= and <= 를 개발자가 편리하게 사용하기 위해 between 함수를 사용하는데
- 인데스 된 컬럼을 사용시 함수 사용은 자제 하는 것이 좋다.
4. date, datetime 을 비교할 경우 unix_timestamp 로 하는것이 좋다.
- date 나 datetime 의 컬럼을 between 이나 >= 조건으로 사용하는 경우가 많은데
- 컬럼 타입을 int 로 하고 데이터를 unix_timestamp로 변경해서 비교하는것이 훨씬 빠를 수 있다.
728x90
반응형
LIST