MySQL Integer vs DateTime 인덱스
비슷한 질문들을 많이 봤지만, 그 질문들은 모두 다음과 같습니다.Timestamp
그리고.DateTime
필드 유형을 인덱싱하지 않습니다.적어도 내 이해는 그래.
아시다시피 Date Time에는 몇 가지 이점이 있습니다.잠시 옆에 두고 테이블의 엔진이InnoDB
와 함께10+ million records
기준이 다음과 같은 경우 어떤 쿼리가 더 빨리 수행됩니까?
- 인덱스가 있는 날짜 시간
- 인덱스가 있는 int
즉, 날짜와 시간을 다음과 같이 저장하는 것이 좋습니다.DateTime
UNIX 타임스탬프 또는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가 항상 빠르다고 말하는 것이다.하지만 그렇지 않은 것 같다.
추가하도록 편집됨:MyISAM이 아닌 InnoDB를 사용하고 있는 것은 알고 있습니다만, InnoDB의 케이스에 대해서는 이에 반하는 것은 찾을 수 없었습니다.또한 같은 저자가 InnoDB 테스트를 했습니다.
MySQL Date Format의 Mysql 서버의 DATETIME, TIMESTAMP 및 INT 타입의 놀라운 비교와 벤치마크를 볼 수 있듯이 어플리케이션에 따라 달라집니다. 사용해야 할 데이터 유형 Datetime, Timestamp 및 INT를 비교합니다. 상황에 따라 INT의 성능이 다른 것보다 우수하고 경우에 따라서는 DATETIME의 성능이 우수하다는 것을 알 수 있습니다.어플리케이션에 따라 달라집니다.
언급URL : https://stackoverflow.com/questions/4594229/mysql-integer-vs-datetime-index
'programing' 카테고리의 다른 글
Composer가 MariaDB 설치를 확인할 수 있습니까? (0) | 2022.09.08 |
---|---|
PS4용 게임을 개발한 적이 없는 game_co를 선택합니다. (0) | 2022.09.08 |
모듈 [$injector:unpr] 알 수 없는 공급자: $routeProvider (0) | 2022.09.08 |
"만약" 규칙이란 정확히 무엇입니까? (0) | 2022.09.08 |
PHP에서 SQL 주입을 방지하려면 어떻게 해야 합니까? (0) | 2022.09.08 |