MySQL 인덱스 비교: 정수 대 DateTime
이전 논의에서는 인덱싱 없이 Timestamp와 DateTime 필드 유형을 비교했지만 이번 조사에서는 특히 다음에 중점을 둡니다. 수백만 개의 레코드가 있는 InnoDB 테이블의 인덱스가 있는 int에 비해 인덱스가 있는 DateTime의 성능.
이 시나리오에서 다음을 기반으로 하는 기준이 있는 쿼리:
실증적 평가
MySQL 5.1.41과 천만 개의 레코드를 사용한 초기 테스트는 int의 놀라운 속도 이점을 보여줍니다.
Query | DateTime with Index (sec) | int with Index (sec) |
---|---|---|
COUNT(*) | 120.27 | 25.02 |
BETWEEN | 8.41 | 1.56 |
설명
int의 효율성은 인덱스를 쿼리 기준과 직접 비교할 수 있어 MySQL이 날짜를 구문 분석하고 변환할 필요가 없다는 사실에 기인합니다. 반면 DateTime에서는 날짜 및 시간 구성 요소를 추출하고 비교하기 위해 추가 처리가 필요합니다.
추가 고려 사항
동일한 테이블에 저장된 두 필드 유형을 사용한 후속 테스트에서는 유사한 결과가 나왔습니다. 이는 MySQL이 DateTime과 int 값의 동일성을 인식하여 쿼리를 최적화할 수 있음을 시사합니다.
결론
이러한 결과를 바탕으로 날짜와 시간을 저장하는 것이 좋습니다. 인덱스 기반 쿼리의 성능이 가장 중요한 경우 int(UNIX 타임스탬프)로 사용됩니다. 이러한 최적화는 특히 날짜 기반 기준이 빈번하게 사용되는 대규모 데이터베이스에서 쿼리 실행 시간을 크게 줄일 수 있습니다.
위 내용은 대규모 데이터 세트의 경우 정수 인덱싱이 날짜/시간 인덱싱보다 더 빠릅니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!