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
'IT > DBMS 공통' 카테고리의 다른 글
[MySQL] Join 속도 향상하려면 (MySQL Hint) (2) | 2021.01.07 |
---|---|
Procedure Cursor 를 이용한 ResultSet 반환 (0) | 2020.10.15 |
MySQL 인덱스 설정 기준 (0) | 2020.08.07 |
[MySQL] 실행계획 (0) | 2020.01.31 |
database convert latin1 to utf-8 (0) | 2014.09.15 |