OFFSET对Vertica中查询的影响

时间:2018-06-19 10:24:20

标签: sql performance vertica

在我的代码中,我应该读取表的所有记录,并在for循环中使用此查询:

SELECT * FROM EVENT ORDER BY EV_TIMESTAMP , ID LIMIT 50000 OFFSET ...

每次OFFSET值都会更新。

但我发现通过增加OFFSET会增加查询时间。

Chart of Query time of 1k offset vs 5M offset (100 iteration)

1k偏移与5M偏移(100次迭代)的查询时间图

Chart of Query time increment by increasing OFFSET (100 sample with 50K step, it means 0,50K,100K, ...)

通过增加OFFSET来查询时间增量图表(100个样本,50K步,意味着0,50K,100K,......)

(我也有基于此查询的投影)

我该如何解决这个问题?

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

■■根据@jarlh评论■■

更新-1-

我更改了这个query_1:

SELECT * FROM EVENT ORDER BY EV_TIMESTAMP , ID LIMIT 50000 OFFSET 50000000

到这一个query_2:

SELECT * FROM CE_EVENT where internal_timestamp>='2018-06-09 16:55:27' and id>4311750001 ORDER BY INTERNAL_TIMESTAMP , ID LIMIT 50000

internal_timestamp和id应取自上一个循环。

我显示query_1大约需要2.93秒,但在下一个图像中,您可以看到query_2(具有相同的结果)需要0.92秒(100次迭代):

enter image description here 绿线与query_2相关,蓝色与query_1相关

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

感谢@jarlh,他的建议帮助了我。

但我的问题是为什么OFFSET会影响查询效果? 这是Vertica中的错误或不当行为吗?

0 个答案:

没有答案