programing

MySQL Integer vs DateTime 인덱스

prostudy 2022. 9. 8. 17:45
반응형

MySQL Integer vs DateTime 인덱스

비슷한 질문들을 많이 봤지만, 그 질문들은 모두 다음과 같습니다.Timestamp그리고.DateTime필드 유형을 인덱싱하지 않습니다.적어도 내 이해는 그래.

아시다시피 Date Time에는 몇 가지 이점이 있습니다.잠시 옆에 두고 테이블의 엔진이InnoDB와 함께10+ million records기준이 다음과 같은 경우 어떤 쿼리가 더 빨리 수행됩니까?

  1. 인덱스가 있는 날짜 시간
  2. 인덱스가 있는 int

즉, 날짜와 시간을 다음과 같이 저장하는 것이 좋습니다.DateTimeUNIX 타임스탬프 또는int내장 MySQL 기능을 사용할 필요가 없습니다.

갱신하다

MySQL 5.1.41(64비트) 및 1,000만 레코드를 사용하여 테스트한 결과, 초기 테스트에서는 다음과 같은 이점이 있는 것으로 나타났습니다.int두 개의 테이블이 사용되었습니다.tbl_dt와 함께DateTime그리고.tbl_int와 함께int기둥.몇 가지 결과:

SELECT SQL_NO_CACHE COUNT(*) FROM `tbl_dt`;
+----------+
| COUNT(*) |
+----------+
| 10000000 |
+----------+
1 row in set (2 min 10.27 sec)

SELECT SQL_NO_CACHE COUNT(*) FROM `tbl_int`;
+----------+
| count(*) |
+----------+
| 10000000 |
+----------+
1 row in set (25.02 sec)

SELECT SQL_NO_CACHE COUNT(*) FROM `tbl_dt` WHERE `created` BETWEEN '2009-01-30' AND '2009-12-30';
+----------+
| COUNT(*) |
+----------+
|   835663 |
+----------+
1 row in set (8.41 sec)

SELECT SQL_NO_CACHE COUNT(*) FROM `tbl_int` WHERE `created` BETWEEN 1233270000 AND 1262127600;
+----------+
| COUNT(*) |
+----------+
|   835663 |
+----------+
1 row in set (1.56 sec)

shantanuo의 제안대로 두 필드를 한 테이블에 다시 업데이트 합니다.

업데이트 #2

다수의 서버 크래시가 발생한 후의 최종 결과:) int 타입이 대폭 빨라졌습니다.어떤 쿼리를 실행했든 속도 차이는 위의 결과와 거의 동일했습니다.

관찰된 "이상한" 것은 두 필드 유형이 동일한 테이블에 저장되었을 때 실행 시간이 거의 동일하다는 것입니다.MySQL은 Date Time과 int 둘 다에 저장했을 때 값이 동일한지 알 수 있을 정도로 스마트한 것 같습니다.그 주제에 대한 어떤 문서도 찾지 못했기 때문에, 단지 관찰일 뿐입니다.

위의 답변에서 언급된 테스트에서 저자는 기본적으로 다음과 같이 증명합니다.UNIX time미리 계산해서INT이김.

내 본능은 ints가 항상 빠르다고 말하는 것이다.하지만 그렇지 않은 것 같다.

http://gpshumano.blogs.dri.pt/2009/07/06/mysql-datetime-vs-timestamp-vs-int-performance-and-benchmarking-with-myisam/

추가하도록 편집됨:MyISAM이 아닌 InnoDB를 사용하고 있는 것은 알고 있습니다만, InnoDB의 케이스에 대해서는 이에 반하는 것은 찾을 수 없었습니다.또한 같은 저자가 InnoDB 테스트를 했습니다.

http://gpshumano.blogs.dri.pt/2009/07/06/mysql-datetime-vs-timestamp-vs-int-performance-and-benchmarking-with-innodb/

MySQL Date Format의 Mysql 서버의 DATETIME, TIMESTAMP 및 INT 타입의 놀라운 비교와 벤치마크를 볼 수 있듯이 어플리케이션에 따라 달라집니다. 사용해야 할 데이터 유형 Datetime, Timestamp 및 INT를 비교합니다. 상황에 따라 INT의 성능이 다른 것보다 우수하고 경우에 따라서는 DATETIME의 성능이 우수하다는 을 알 수 있습니다.어플리케이션에 따라 달라집니다.

언급URL : https://stackoverflow.com/questions/4594229/mysql-integer-vs-datetime-index

반응형