请告诉我,如果我在MySQL SELECT
查询中指定这样的间隔:subtime(now(), INTERVAL 1 day)
,同时有一个适当的datetime
列用作引用,这会阻止查询每次运行时都要查看整个表(在我的情况下超过100000条记录),而不是只查看过去24小时内的记录吗?datetime
表格是否需要DESC
订单?此外,如果我在查询中有SUM(column)
,它是否也只在指定的时间间隔内运行?
编辑:如果我只想使用上面提到的SUM
来对一个只有值为"1"的整数的列求和,那么简单地检查SELECT
查询用mysql_num_rows
返回多少行会更好吗?结合时间间隔设置会更有效吗?
谢谢!
它实际上会阻止MySQL遍历整个表,但如果您只在SELECT部分中使用subtime()
,则不会。相反,你必须做这样的事情:
SELECT * FROM myTable
WHERE myDateCol BETWEEN DATE_SUB(now(), INTERVAL 1 day) AND now()
查询现在将只选择一天以前的行。在myDateCol
上添加B-TREE索引以加快速度:
ALTER TABLE myTable ADD INDEX myIdx USING BTREE (myDateCol)
请参阅MySQL文档中关于的主题