我正在使用 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。