我正在尝试优化以下查询,将last_updated
值与日期时间进行比较。我的基本查询是:
SELECT Count(1) AS loopCount FROM main_iteminstance mi
WHERE mi.last_updated >= '2018-04-12 07:25:23.000';
做explain
给了我:
即使字段已编入索引,运行查询大约需要8秒。有没有更好的方法来做到这一点?这里大约有10M行。
该表看起来像这样(虽然还有更多字段):
CREATE TABLE `main_iteminstance` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`last_updated` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
PRIMARY KEY (`id`),
KEY `last_updated` (`last_updated`)
) ENGINE=InnoDB AUTO_INCREMENT=205421031 DEFAULT CHARSET=utf8
答案 0 :(得分:1)
试试这个:
SELECT Count(1) AS loopCount FROM main_iteminstance mi
WHERE mi.last_updated IS NOT NULL AND mi.last_updated >= '2018-04-12 07:25:23.000';
如果这不起作用,请将以下查询的结果添加到临时表中,并在其上进行日期时间/日期过滤:
SELECT Count(1) AS loopCount FROM main_iteminstance mi
WHERE mi.last_updated IS NOT NULL