如何从一个非常大的表中获取所有数据?

时间:2021-04-05 20:52:34

标签: teradata

我想知道在性能和内存消耗方面,从 Teradata 中的一个非常大的表(UPI 和 NUPI)中获取所有数据的最佳方法是什么?例如。超过 100 亿行。前提是我不能只运行 select * from table,因为线轴尺寸远小于表的尺寸。

对于具有唯一列的较小表(如 UPI),我可以使用像 select top PAGESIZE * from table where id > LASTVAL order by id 这样的分页重复查询。然而,这似乎不适合大表,因为排序似乎需要很长时间。它不适用于没有唯一列的表。

我注意到生产环境中的大多数大表都是 NUPI 表。因此,我试图提出以下策略:首先将所有具有相应行数的不同 PI 值导出到临时表,并使用该表来获取可用于分页的 PI 值。这可能适用于 PI 基数较低的表,例如100 亿行的表中有 100 万个不同的 PI 值。但是,在基数非常高的情况下,临时表仍然会很大,可能无法放入线轴中。

我之前尝试使用导出功能 (How to export large table from Teradata),但是由于我无法使用 nospoolonly 模式,这对我来说似乎没有帮助。

我目前并不真正关心数据一致性 - 假设要查询的表在获取过程中不会更新。

0 个答案:

没有答案
相关问题