首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加速数据库访问

加速数据库访问
EN

Stack Overflow用户
提问于 2010-01-12 22:43:27
回答 7查看 104关注 0票数 1

我有一个数据库,其中包含每0.1秒收集一次的记录,我需要对给定日期的数据进行时间平均,以达到每20分钟一次。因此,我需要返回一天的数据,平均为每20分钟,即24*3个值。

目前,我在一天中每隔20分钟对数据库进行一次单独的AVG调用,即24*3次调用。我与数据库的连接似乎有点慢(它是远程的),并且需要大约5分钟来完成所有的平均值。如果我访问一整天的数据,然后将其平均到每20分钟一次,这样做会不会更快?如果这有助于回答这个问题,我必须在平均之前对数据进行一些算术运算,即将几个表列相乘。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-01-12 22:54:30

您可以计算午夜以来的分钟数,如下所示:

代码语言:javascript
复制
datepart(hh,datecolumn)*60 + datepart(mi,datecolumn)

如果你将其除以20,你会得到20分钟间隔的数字。例如,00:10落在区间000:30落在区间115:30落在区间46,依此类推。使用此公式,您可以按20分钟间隔分组,如下所示:

代码语言:javascript
复制
select
    (datepart(hh,datecolumn)*60 + datepart(mi,datecolumn)) / 20 as IntervalNr
,   avg(value)
from      YourTable
group by  (datepart(hh,datecolumn)*60 + datepart(mi,datecolumn)) / 20

您可以在avg调用中进行数学运算,如下所示:

代码语言:javascript
复制
avg(col1 * col2 - col3 / col4)
票数 1
EN

Stack Overflow用户

发布于 2010-01-12 22:49:58

一般来说,减少查询的数量是一个好主意。在查询中(即在数据库中)聚合和执行任何算法/过滤/分组,然后在服务器端(例如在PHP中)进行“迭代”计算。

票数 1
EN

Stack Overflow用户

发布于 2010-01-12 22:54:49

为了确定它是否会更快,应该对其进行测量。

然而,它应该更快,因为您连接到数据库的速度很慢,这样往返次数对总执行时间的影响就会更大。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2049724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档