rubo77 Asked: 2012-11-07 22:49:33 +0800 CST2012-11-07 22:49:33 +0800 CST 2012-11-07 22:49:33 +0800 CST 是否使用 mysql 中的索引对 UNIX_TIMESTAMP 进行查询? 772 如果我使用 .. WHERE UNIX_TIMESTAMP(`some_timestamp`)>NOW() 在 SELECT 中,此查询是否仍然在设置上的索引上使用some_timestamp? mysql index 1 个回答 Voted Best Answer ypercubeᵀᴹ 2012-11-07T22:57:24+08:002012-11-07T22:57:24+08:00 不可以。到目前为止,所有 MySQL 版本中的优化器都不能对这种情况使用索引。它是不可分割的 如果您希望它能够使用索引,则必须使用函数来重写/反转您的条件,以便在列上不应用任何函数: WHERE some_timestamp > ReverseFunctionOf_UNIX_TIMESTAMP( NOW() ) 使用什么,取决于列some_timestamp数据类型。 如果它是 a TIMESTAMP,您可以简单地使用 WHERE some_timestamp> NOW() 如果some_timestamp是一个INT存储 Unix 时间戳(自 以来的秒数'1970-01-01 00:00:00'),我认为你有正确的功能,但在错误的地方。你应该使用: WHERE some_timestamp > UNIX_TIMESTAMP( NOW() ) 或等价物: WHERE some_timestamp > UNIX_TIMESTAMP() 检查 MySQL 文档:DATE和TIME函数
不可以。到目前为止,所有 MySQL 版本中的优化器都不能对这种情况使用索引。它是不可分割的
如果您希望它能够使用索引,则必须使用函数来重写/反转您的条件,以便在列上不应用任何函数:
使用什么,取决于列
some_timestamp
数据类型。如果它是 a
TIMESTAMP
,您可以简单地使用如果
some_timestamp
是一个INT
存储 Unix 时间戳(自 以来的秒数'1970-01-01 00:00:00'
),我认为你有正确的功能,但在错误的地方。你应该使用:或等价物:
检查 MySQL 文档:
DATE
和TIME
函数