【发布时间】:2010-12-15 12:03:25
【问题描述】:
我遇到了一些性能问题,其中计算列平均值的 SQL 查询随着记录数的增加而逐渐变慢。是否有可以添加到列中的索引类型以加快平均计算速度?
有问题的数据库是 PostgreSQL,我知道特定的索引类型可能不可用,但我也对理论上的答案感兴趣,如果没有某种缓存解决方案,这甚至是可能的。
更具体地说,有问题的数据本质上是具有这种定义的日志:
table log {
int duration
date time
string event
}
我正在做类似的查询
SELECT average(duration) FROM log WHERE event = 'finished'; # gets average time to completion
SELECT average(duration) FROM log WHERE event = 'finished' and date > $yesterday; # average today
第二个总是相当快,因为它有一个更严格的 WHERE 子句,但总平均持续时间是导致问题的查询类型。我知道我可以缓存这些值,使用 OLAP 或其他东西,我的问题是天气有一种方法可以完全通过数据库端优化(例如索引)来做到这一点。
【问题讨论】:
标签: sql performance postgresql