首先,我已经看过很多类似的问题,但是所有这些问题都Timestamp
与DateTime
字段类型有关,而没有索引。至少那是我的理解。
众所周知,DateTime具有某些优势。把它们放在一边了一分钟,并假设表的引擎是InnoDB
用10+ million records
,它查询将更快地执行时标准基于:
- 带索引的DateTime
- 带索引的int
换句话说,最好将日期和时间存储为?DateTime
或UNIX时间戳int
。请记住,不需要使用任何内置的MySQL函数。
更新资料
使用MySQL
5.1.41(64位)和1000万条记录进行了测试,初步测试显示速度存在明显差异,而则支持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足够聪明,可以确定存储在DateTime和int中的值何时相同。尚未找到有关该主题的任何文档,因此仅是一个观察。
我的直觉是说int总是更快。但是,事实并非如此
http://gpshumano.blogs.dri.pt/2009/07/06/mysql-datetime-vs-timestamp-vs-int-
performance-and-benchmarking-with-
myisam/
编辑添加:我意识到您使用的是InnoDB,而不是MyISAM,但是在InnoDB案例中,我没有发现任何与此矛盾的东西。另外,同一位作者进行了InnoDB测试
http://gpshumano.blogs.dri.pt/2009/07/06/mysql-datetime-vs-timestamp-vs-int-
performance-and-benchmarking-with-
innodb/
主要内容:索引,下载索引,构件搜索我们知道,Maven 中央仓库为用户提供了多达数十万构件,而 Nexus 可以代理所有的远程仓库(包括 Maven 中央仓库),可见 Nexus 仓库中构件的数量相当庞大。用户想要在这么多构件中,快速的查找自己所需的构件,一个最直接有效的方式就是:搜索。 Nexus 作为一款成熟的仓库管理工具,它通过维护仓库的索引提供了构件搜索功能,以便帮助用户方便快速地找到所需构件。 本节我们将详细为您介绍 N
问题内容: 我在MySQL数据库中有下表: SQL将如下所示: 如您所见,我同时创建了primaryId和和imgDate索引键。我的想法是,该WHERE子句使用primaryId,而ORDER子句使用来查询结果imgDate。 我的问题是,现在使用多索引会更好吗?还是我应该使用多列索引(目前我不太了解)? 这是我从EXPLAIN得到的: 注意:这不是使用多列索引,这是使用上表说明的结果。 问题答
根据ISO 8601编码的日期和时间(年,月,日,小时,分钟,秒,分数),时区设置为UTC。 例子 (Example) <!DOCTYPE HTML> <html> <body> <form action = "/cgi-bin/html5.cgi" method = "get"> Date and Time : <input type = "datetime"
类名: Imi\Util\DateTime 日期时间工具类 方法 getSecondsByInterval 将一个 \DateInterval,与当前时间进行计算,获取毫秒数 $d1 = new DateTime("2019-06-21"); $d2 = new DateTime("2018-06-21"); $diff = $d2->diff($d1); $s = \Imi\Util\Date
datetime是Python处理日期和时间的标准库。 获取当前日期和时间 我们先看如何获取当前日期和时间: >>> from datetime import datetime >>> now = datetime.now() # 获取当前datetime >>> print(now) 2015-05-18 16:28:07.198690 >>> print(type(now)) <class '
问题内容: 在我的SQL Server我有测试,其中只包含三行一个非常简单的表: ,和(,,)。 SQL中的DateTime格式类似于:。 C#中的DateTime格式类似于:。 我使用以下代码获取C#DateTime格式: 如果我尝试将其放入,则会出现错误: 日历不支持由字符串表示的DateTime。 在我的C#应用程序中,我正在尝试查找破损日期之间的总小时数。我有点想使用它了,但是它只适用