집 >데이터 베이스 >MySQL 튜토리얼 >MySQL에서 DATETIME 필드의 날짜 부분을 인덱싱하는 방법은 무엇입니까?
MySQL에서 DATETIME 필드의 날짜 부분에 인덱스 생성
DATETIME 필드의 날짜 부분에 인덱스를 생성하려면, 다음 구문을 사용할 수 있습니다.
CREATE INDEX idx_date ON table_name(DATE(date_field));
예를 들어, transactionlist 테이블의 TranDateTime 필드에서 다음 쿼리를 실행합니다.
CREATE INDEX idx_date ON transactionlist(DATE(TranDateTime));
인덱스를 생성한 후에는 이를 사용하여 필드의 날짜 부분을 필터링하는 쿼리 속도를 높일 수 있습니다. 예를 들어, 다음 쿼리는 idx_date 인덱스를 사용하여 2008-08-17에 발생한 모든 트랜잭션을 빠르게 찾습니다.
SELECT * FROM transactionlist WHERE DATE(TranDateTime) = '2008-08-17';
인덱스 쿼리에서 DATE() 함수 방지
인덱스 쿼리에서 DATE() 함수를 사용하면 인덱스를 우회하여 전체 쿼리가 발생할 수 있다는 점에 유의하는 것이 중요합니다. 테이블 스캔. 이는 MySQL이 인덱스된 열을 수정하는 함수를 사용하는 쿼리를 최적화할 수 없기 때문입니다.
대신 범위 쿼리를 사용하여 검색하려는 날짜 범위를 지정해야 합니다. 예를 들어 다음 쿼리는 idx_date 인덱스를 사용하여 2008-08-17과 2008-08-17 23:59:59.999999:
SELECT * FROM transactionlist WHERE TranDateTime BETWEEN '2008-08-17' AND '2008-08-17 23:59:59.999999';사이에 발생한 모든 트랜잭션을 빠르게 찾습니다.
위 내용은 MySQL에서 DATETIME 필드의 날짜 부분을 인덱싱하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!