Iam当前正在开发一个应用程序,该应用程序分析保存在我们数据库中的运行时值(过滤器的平均值/中位数,如日,月,使用的方法等)。但是,我还读到,用户按下按钮后,用户友好的应用程序不应花太长时间来显示数据,但我只是想不出一种方法来快速对大型数据库进行查询。我考虑过要写一些东西来存储每天所需的值,这样就不必在每次用户尝试获取信息时都需要再次计算它们,但是有了这么多的过滤器,似乎只是要存储大量信息的方式,我只是想不通另一种方式。
这是我的SQL查询的样子:
SELECT
p.processID, p.runtime, p.servername
FROM
public.process p
WHERE
(p.starttime BETWEEN 1356994800000 AND 1359414000000) AND
p.MainMethodID = '12';
编辑:
MainMethodID是一个BIGINT,我已经在“ starttime”和“ MainMethodID”中使用了索引。我的问题是,是否有一种方法可以更快地获得GUI应用程序的结果,因为5秒钟以上的内容看起来都相当长,而且我认为我不能因为之前提到的许多过滤器选项(使用的方法和时间范围)而仅计算所有时间。
EXPLAIN给出以下结果:
1, 'SIMPLE', 'p', 'ref', 'MainMethodID,startTime', 'MainMethodID', '8', 'const', 28128, 'Using index condition; Using where'
最佳答案
在(MainMethodId, startTime)
上创建一个复合索引