>데이터 베이스 >MySQL 튜토리얼 >시간을 무시하고 요일별로 MySQL 레코드를 효율적으로 선택하는 방법은 무엇입니까?

시간을 무시하고 요일별로 MySQL 레코드를 효율적으로 선택하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-06 20:04:13508검색

How to Efficiently Select MySQL Records by Day, Ignoring Time?

시간을 고려하지 않고 요일별로 MySQL 레코드를 선택하는 방법

날짜/시간 열이 포함된 테이블을 작업할 때 다음이 필요한 경우가 많습니다. 발생한 시간에 관계없이 특정 날짜의 기록을 검색합니다. 그러나 간단한 날짜 비교를 사용하는 것은 비효율적일 수 있으며 인덱스 활용을 방해할 수 있습니다.

잘못된 접근 방식에는 다음과 같이 날짜/시간 열에 적용된 날짜 함수가 원하는 날짜와 일치하는 레코드를 선택하는 것이 포함됩니다.

SELECT *
FROM tablename
WHERE DATE(columnname) = '2012-12-25'

이 쿼리에서는 모든 행의 날짜를 계산하기 위해 MySQL이 필요합니다. 이는 대규모 데이터세트의 경우 계산 집약적이고 속도가 느릴 수 있습니다. 또한 WHERE 절에 계산을 사용하면 날짜/시간 열의 인덱스를 사용하여 쿼리를 최적화할 수 없습니다.

대신 하루 전체를 나타내는 날짜/시간 값 범위를 정의하는 것이 더 효율적인 접근 방식입니다. , 특정 날짜의 시작과 끝이 포함되어 있는지 확인합니다. 이는 BETWEEN 절을 사용하여 수행됩니다.

SELECT *
FROM tablename
WHERE columnname BETWEEN '2012-12-25 00:00:00' AND '2012-12-25 23:59:59'

이 수정된 쿼리를 통해 MySQL은 날짜/시간 열의 인덱스를 활용하여 성능을 크게 향상시킬 수 있습니다. 이 접근 방식을 사용하면 발생한 시간에 관계없이 하루 전체의 레코드가 선택된다는 점에 유의하는 것이 중요합니다.

최신 버전의 MySQL에서는 잠재적인 가능성을 방지하기 위해 다음 구문을 사용하는 것이 좋습니다. 모호성:

SELECT *
FROM tablename
WHERE columnname >= '2012-12-25 00:00:00'
AND columnname < '2012-12-26 00:00:00'

이러한 지침을 따르면 MySQL에서 시간을 고려하지 않고 효율적으로 날짜 기준으로 레코드를 선택할 수 있어 최적의 데이터베이스 성능을 보장할 수 있습니다.

위 내용은 시간을 무시하고 요일별로 MySQL 레코드를 효율적으로 선택하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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