执行SQL以从巨大的表中获取几行会引发错误"没有更多的假脱机空间错误"

时间:2017-06-05 09:46:31

标签: teradata

 Select row_id from table_name
 Sample 20; 

不再发出假脱机空间错误......

是否有任何查询可以在更短的时间内从表中获取20个任意行?假设表非常庞大

2 个答案:

答案 0 :(得分:0)

这很常见,具体取决于表的主索引。如果使用主索引添加谓词,则应返回结果。

只需添加一个包含主索引的WHERE子句来限制结果,您应该看到没有假脱机问题的结果。

答案 1 :(得分:0)

假设

  • 表_是表名
  • Table_v是该Table_T的视图....

以下是关于执行查询的说明....

首先,我们将table_T锁定在视图table_v中以进行访问

接下来,我们将通过视图table_v中的表执行所有Amp检索步骤,其中所有行扫描的条件为(table_T在视图table_v.col2中为null)为spool2(all_amps),这是在本地构建的所有放大器。输入表不会缓存在内存中,位有资格进行同步扫描。假设卷轴的大小高可信度为1行(35字节)。步骤的估计时间是2分16秒

我们通过全行扫描到spool5,从spool2执行所有amps stat功能步骤,后者通过哈希码重新分配给所有功放。他将结果行放入spool1(group_amps),这是在本地安装的放大器上。该步骤用于检索前20行,然后执行step4。估计的大小高可信度为1行41字节

我们通过所有行扫描到spool5(最后一次使用)的方式从spool2(最后一次使用)执行全功放的stat功能步骤,该功能通过哈希码重新分配给所有功放。结果行放入spool1(group_amps),后者在放大器本地构建。此步骤用于检索前20行。高可信度地估计该步长为1行(41字节)

最后,我们将向所有涉及的放大器发送END TRANSACTION

spool1的内容被发送回用户