我对链接的 DB2 表有一个相当简单的查询。
SELECT GC_TBSELC.*
FROM GC_TBSELC
WHERE SELC_EFF_DATE > #1/1/2017#;
工作正常,返回结果。 但是,当我添加"DISTINCT"关键字时,出现错误:
ODBC -- 呼叫失败
[[IBM][CLI 驱动程序][DB2] SQL0904N 由 不可用的资源。 原因代码:"00C90305",资源类型: "00000100"和资源名称:"DSNDB07"。 SQLSTATE=57011
关于为什么"DISTINCT"关键字会导致这种情况,以及是否有办法绕过它从表中获取不同的记录的任何想法?
SQL0904N with Reason code: 00C90305
表示以下内容:
代理对工作文件存储的空间使用限制为 超过。空间使用限制由 zparm 关键字确定 最大温度。
通过在SELECT *
(所有列(上添加DISTINCT
子句,您可能会超出可用的工作空间。
让我问一个更好的问题:为什么要DISTINCT
表中的所有列?这真的是您正在寻找的结果集吗? 在此表中DISTINCT
列的子集是否更合适?
没有 DISTINCT 的查询不需要重复删除 - 行可以流式传输回调用方。
DISTINCT 告诉 Db2 - 在传回行之前删除重复项。 在这种情况下,Db2 可能将行具体化为排序工作并进行排序以删除重复项,在此过程中,超出了排序工作限制。