0

我正在使用 splunk。Postgres SQL。

我有 210 万行要按 ASC 顺序提取。

这是我正在工作的标准查询:

WHERE we_student_id = 5678
ORDER BY audit.b_created_date DESC NULLS LAST

那么我通常使用:(如果数据超过1-2M。我将它们分成批次)

FETCH FIRST 500000 ROWS ONLY
OFFSET 500000 ROWS FETCH NEXT 500000 ROWS ONLY

这一次,我的客户要求根据审核的 id 而不是 audit_created_date 按 ASC 顺序提取它们。

我用了:

WHERE student_id = 5678
ORDER BY audit.audited_id ASC NULLS LAST

==========

我试图拉起前 500k。

我用了:

*ORDER BY ASC NULLS LAST
LIMIT 500000 OFFSET 0* 

结果只有100k。

我尝试使用相同的查询将 maxrows=0 放在我的 select 语句之前

*ORDER BY ASC NULLS LAST
LIMIT 500000 OFFSET 0*

但我收到一个错误:canceling statement due to user request.

我尝试了这个查询来获得第一个 400k 而不是 500k 并删除了 OFFSET 0。我仍然maxrows=0在我的 select 语句之前使用

*ORDER BY ASC NULLS LAST
LIMIT 400000*

结果是400k。

当我试图提取下一个 400k 时,我查询

*LIMIT 400000 OFFSET 400000*

我又遇到了错误:canceling statement due to user request.

通常,我可以在数据库上提取 2M 行。我通常使用“FETCH FIRST 1000000”然后抵消另一批。我通常对 DB 的查询是 ORDER BY DESC NULLS LAST首先使用 FETCH 和 OFFSET

但这一次,我的客户想要通过 ASC 顺序获取数据。

我试过FETCH FIRST 400000 ROWS ONLY查询,结果是 400k。但是每当我将数字增加到 500000 时,我都会收到此错误:canceling statement due to user request.

我通常使用maxrows=0因为 Splunk 只显示前 100k 行。我的大部分数据是 1-2 百万。

此错误仅在客户按 ASC 订单请求报告时发生。

我只是想拉起数据库上的 210 万行,我不知道如何按 ASC 顺序拉起它。我不知道我是否正确使用了 OFFSET 和 LIMIT。

4

0 回答 0