검색결과 리스트
날짜검색에 해당되는 글 1건
- 2013.06.18 날짜검색 시 주의사항
글
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
대용량의 테이블에서 날짜를 통한 검색을 할 때,
(reg_date는 datetime형이고, 인덱스가 걸려있다고 가정한다.)
SELECT *
FROM Test
WHERE date_format(reg_date, '%Y-%m-%d') BETWEEN '2013-01-01' AND '2013-01-31';
SELECT *
FROM Test
WHERE date(reg_date) BETWEEN '2013-01-01' AND '2013-01-31';
위와 같이 쿼리를 하면 데이터가 늘어날수록 부하가 걸리는 쿼리가 된다.
- WHERE절의 왼쪽은 가공하지 않는다. (인덱스를 타지 않음)
- BETWEEN 절도 함수이므로 함수는 되도록 쓰지 않는다.
날짜를 검색할 때 올바른 검색방법은 아래와 같다.
SELECT *
FROM Test
WHERE reg_date >= '2013-01-01'
AND reg_date < '2013-02-01'
검색속도는 상당히 차이가 난다.
(reg_date는 datetime형이고, 인덱스가 걸려있다고 가정한다.)
SELECT *
FROM Test
WHERE date_format(reg_date, '%Y-%m-%d') BETWEEN '2013-01-01' AND '2013-01-31';
SELECT *
FROM Test
WHERE date(reg_date) BETWEEN '2013-01-01' AND '2013-01-31';
위와 같이 쿼리를 하면 데이터가 늘어날수록 부하가 걸리는 쿼리가 된다.
- WHERE절의 왼쪽은 가공하지 않는다. (인덱스를 타지 않음)
- BETWEEN 절
댓글에도 썼지만 미니어스님의 얘기를 듣고 정정합니다.
BETWEEN절도 댓글의 예처럼 키워드여서 내부에서 약간의 공수가 있는 것 같습니다.
날짜를 검색할 때 올바른 검색방법은 아래와 같다.
SELECT *
FROM Test
WHERE reg_date >= '2013-01-01'
AND reg_date < '2013-02-01'
검색속도는 상당히 차이가 난다.
'-- MySQL' 카테고리의 다른 글
대량 insert를 위해 Lock Table, Disable Keys 사용 (0) | 2013.07.10 |
---|---|
MySQL Linked Server - Federated Engine (0) | 2013.07.08 |
MySQL GROUP_CONCAT (0) | 2013.06.18 |
MySQL 대소문자 구분할 수 있는 컬럼 (0) | 2013.06.18 |
MINUS와 INTERSECT 집합 연산 (0) | 2013.05.29 |
RECENT COMMENT