【问题标题】:Cache table versus query on full table缓存表与全表查询
【发布时间】:2014-11-03 21:58:49
【问题描述】:

到目前为止,我有一个名为“calls”的表,其中包含大约 1,000,000 行。 每天都有新的通话,我提供了一个汇总的每日统计数据,只查看今天的通话。

今天所有呼叫的总和,按状态分组。

我的问题是……

仅将今天的调用存储在每天清除的单独缓存表中是否有任何性能优势。然后只在这张表上执行聚合。

或者我按日期过滤主表这一事实,有点忽略其他 990,000 行。 这意味着我不会通过创建一个临时缓存表来每天填充来获得任何性能。

【问题讨论】:

    标签: caching aggregates


    【解决方案1】:

    与往常一样,这取决于用例。您没有提供任何关于您每天生成多少记录的信息...

    我不认为过早优化是个好主意。如果你没有遇到任何问题,你为什么要改变? :)

    也许第一步是确保您用于过滤的列(可能是“日期”)已编入索引(因此一切运行得更快)。

    任何现代数据库都能够过滤包含一百万条记录的表(实际上,这没什么),所以不用担心!

    【讨论】:

    • 好吧,我只是想知道当它达到 20,000,000 时会不会是个问题。我每天生成大约 30,000 行。日期是时间戳,所以这不是真正可索引的吗?
    • 20.000.000 对于现代 rdbms 来说仍然不算什么 :)。说真的,别担心。以后有问题,到时候可以考虑。无论如何,确保在正确的列中有正确的索引总是好的,以避免比需要更多的扫描:)。如前所述,您可能应该在“日期”字段中添加索引。
    猜你喜欢
    • 2012-08-03
    • 1970-01-01
    • 2013-10-31
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    • 1970-01-01
    • 2014-09-01
    • 1970-01-01
    相关资源
    最近更新 更多