>  기사  >  데이터 베이스  >  MySQL에서 DATETIME 필드의 날짜 부분을 인덱싱하는 방법은 무엇입니까?

MySQL에서 DATETIME 필드의 날짜 부분을 인덱싱하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-17 22:24:02232검색

How to Index the Date Part of a DATETIME Field in MySQL?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.