我有以下查询:选择WHERE日期比当前日期更大
SELECT id
FROM auctions
WHERE end_dt > TIME_TO_SEC(TIMEDIFF(end_dt, now())) > '0'
GROUP BY auctions.id
ORDER BY end_dt ASC
LIMIT 15
这实在是太慢了。但基本上,我们试图通过检查剩余秒数是否大于零来选择最近的15条即将“结束”的记录。
我觉得我过于复杂了,而且想我可以做这样的事情:
SELECT id
FROM auctions
WHERE end_dt > now()
GROUP BY auctions.id
ORDER BY end_dt ASC
LIMIT 15
然而,这将返回不同的结果。
有没有人有更好的解决方案?
谢谢!
1.如果你只需要'id' - 那么不要对它进行分组,而是使用'DISTINCT'来代替。 2.另外 - 确保你有'end_dt + id'(按照这个特定的顺序)复合索引 – zerkms 2010-09-03 00:21:52