你有索引吗
( eveDate, msisdn )
这将使它成为一个覆盖索引,而不必转到 ID 的实际数据页,但可以通过 where 子句的“eveDate”部分进行查询优化。
每个反馈的建议。
如果数据是基于日期的,我建议有一个单独的表,其中只有相关日期(或者每小时如果这可能对您的工作更好,因为您说您有一个小时索引)和 ID 计数. 如果一天的活动不会改变(或很少改变),这张桌子就坐在那里计数。即使您每晚运行它以每天/每小时更新计数,例如过去 10 天,您的后续查询也几乎是即时的。
此外,您甚至可以使用所有这些记录在相关表上创建一个触发器。随着新记录的添加,它只是对计数器表进行插入/更新,例如......
update CountersSummary
set TotalCount = TotalCount +1
where eveDate = just date portion of DateTimeValueOfNewRecord
and eveHour = hour of DateTimeValueOfNewRecord
if the record count updated = 0
insert into CountersSummary ( eveDate, eveHour, TotalCount )
values ( just date portion of DateTimeValueOfNewRecord,
hour of DateTimeValueOfNewRecord,
1 )
end if