Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 通过不同日期周期循环的统计查询_Postgresql_Loops_Statistics - Fatal编程技术网

Postgresql 通过不同日期周期循环的统计查询

Postgresql 通过不同日期周期循环的统计查询,postgresql,loops,statistics,Postgresql,Loops,Statistics,我在postgresql中有一个巨大的查询日志表。我被要求从中获取统计数据,但表格太大了。它大约有170000000行 所以我被要求提供过去6个月的统计数据,这将包括每天的服务数量 问题是,由于表格太大,要获得这些数据需要花费很长时间 以下是我使用的当前查询: SELECT ql.query_time::timestamp::date,count(ql.query_name),ql.query_name FROM query_log ql WHERE ql.query_time BETWEEN

我在postgresql中有一个巨大的查询日志表。我被要求从中获取统计数据,但表格太大了。它大约有170000000行

所以我被要求提供过去6个月的统计数据,这将包括每天的服务数量

问题是,由于表格太大,要获得这些数据需要花费很长时间

以下是我使用的当前查询:

SELECT ql.query_time::timestamp::date,count(ql.query_name),ql.query_name 
FROM query_log ql
WHERE ql.query_time BETWEEN '2017-12-20 14:00:00.000'::timestamp AND '2018-06-20 14:00:00.000'::timestamp AND success=TRUE
GROUP BY ql.query_time::timestamp::date, ql.query_name;
请就如何使此查询更快、更有效提出建议。我想将输出保存到CSV中。 在过去的6个月里,我一直在考虑每天循环,但不知道怎么做

哦,ql.query\u时间是索引的


谢谢

您可能需要
query\u time
上的索引。使用适当的索引,查询时间将只取决于结果大小,而不取决于表大小。您好!正如我提到的,查询时间是索引的,查询名称也是索引的。我为SQL查询运行了explain,结果是:“GroupAggregate(成本=17724584.26..18878565.49行=40849525宽度=35)”->排序(成本=17724584.26..17885424.80行=64336217宽度=35)”“排序键:((查询时间)::日期),查询名称“”->查询日志上的顺序扫描(成本=0.00..5862068.49行=64336217宽度=35)”“过滤器:(成功和(查询时间>='2017-12-20 14:00:00'::没有时区的时间戳)和(我知道查询时间。然后可能
在查询日志(查询时间)上创建索引,其中success;
。如果这不起作用(并且您的表统计数据准确),那么您可能不得不接受顺序扫描,因为它是最快的选择。