MySQL DATETIME 인덱스로 날짜 쿼리 최적화
MySQL에서 DATETIME 필드로 작업할 때 날짜 필터링과 관련된 쿼리를 최적화하는 것이 중요합니다. DATETIME 열의 일부를 쿼리하는 쿼리 성능을 향상하려면 전용 인덱스 활용을 고려해 보세요.
많은 수의 레코드가 포함된 transactionlist라는 테이블과 TranDateTime이라는 DATETIME 열이 있다고 가정해 보겠습니다. 다음과 같은 쿼리를 실행할 때 성능 문제가 발생합니다.
SELECT * FROM transactionlist WHERE date(TranDateTime) = '2008-08-17'
쿼리가 느린 이유:
MySQL은 열이 전달되었기 때문에 전체 테이블 스캔을 사용하여 이 쿼리를 실행합니다. date() 함수를 통해 쿼리 최적화 프로그램은 함수 결과를 예측할 수 없으므로 인덱스를 우회합니다.
해결책: 날짜 인덱스 생성
테이블 스캔을 방지하고 쿼리 성능을 향상하려면 , TranDateTime 열의 날짜 부분을 포함하는 인덱스를 만듭니다. 다음 명령을 사용하여 이 작업을 수행할 수 있습니다.
CREATE INDEX idx_TranDateTime_date ON transactionlist (date(TranDateTime));
날짜 인덱스를 사용한 쿼리 예:
인덱스를 생성한 후 쿼리가 이를 활용하고 크게 실행됩니다. 더 빠르게:
SELECT * FROM transactionlist WHERE date(TranDateTime) BETWEEN '2008-08-17' AND '2008-08-17 23:59:59.999999';
참고:
BETWEEN 연산자를 사용할 때 시간 구성 요소로 하루의 끝을 지정하여 해당 날짜 내의 모든 트랜잭션을 캡처해야 합니다. 원하는 기간.
위 내용은 DATETIME 인덱스를 사용하여 MySQL에서 날짜 쿼리를 최적화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!