Mysql
是否使用 mysql 中的索引對 UNIX_TIMESTAMP 進行查詢?
如果我使用
.. WHERE UNIX_TIMESTAMP(`some_timestamp`)>NOW()
在 SELECT 中,此查詢是否仍然在設置上的索引上使用
some_timestamp
?
不可以。到目前為止,所有 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
函式