gpt4 book ai didi

MySQL 整数与日期时间索引

转载 作者:IT老高 更新时间:2023-10-28 12:58:49 27 4
gpt4 key购买 nike

首先让我说我看过许多类似的问题,但它们都与没有索引的 TimestampDateTime 字段类型有关。至少这是我的理解。

众所周知,DateTime 有一定的优势。将它们放在一边,假设表的引擎是 InnoDB,具有 10+ 百万条记录,当条件基于时,哪个查询会执行得更快:

  1. DateTime with index
  2. int with index

换句话说,将日期和时间存储为DateTimeint中的UNIX时间戳更好?请记住,不需要使用任何内置的 MySQL 函数。

更新

使用 MySQL 5.1.41(64 位)和 1000 万条记录进行测试,初始测试显示有显着的速度差异有利于 int。使用了两个表,tbl_dtDateTimetbl_intint 列。结果很少:

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 足够聪明,可以确定存储在 DateTime 和 int 中的值何时相同。尚未找到有关该主题的任何文档,因此只是一个观察结果。

最佳答案

我在 test mentioned in the above answer 中看到了,作者基本证明了,提前计算出UNIX时间时,INT胜出。

关于MySQL 整数与日期时间索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4594229/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com