【发布时间】:2019-05-21 20:26:49
【问题描述】:
有什么方法可以优化 DB2 中的以下 SQL:
下面的 SQL 是 257 个 UNION ALL 语句的组合。此查询在我组合少于 255 个 UNION ALL 语句时有效,但在我们尝试执行超过 255 个 UNION ALL 语句时失败并出现以下错误。
错误:
THE STATEMENT IS TOO LONG OR TOO COMPLEX. SQLCODE=-101, SQLSTATE=54001, DRIVER=3.63.75 SQL Code: -101, SQL State: 54001
DB2 SQL 查询:
SELECT
'400005' as COLUMN1,
'DB' as COLUMN2,
'1' AS COLUMN3
FROM sysibm.sysdummy1
UNION ALL
SELECT
'400005' as COLUMN1,
'DB' as COLUMN2,
'2' AS COLUMN3
FROM sysibm.sysdummy1
UNION ALL
.
.
.
.
UNION ALL
SELECT
'400005' as COLUMN1,
'DB' as COLUMN2,
'257' AS COLUMN3
FROM sysibm.sysdummy1
我遇到了几个链接https://www.ibm.com/support/knowledgecenter/en/SSEPEK_10.0.0/codes/src/tpc/n129.html,但它们并没有多大用处。
任何输入都会有所帮助。
谢谢!
【问题讨论】:
-
请在 SQL 编辑器中运行相同的语句(超过 255 个 UNION ALL 语句),您应该可以看到错误。
-
找到一个有 257 行的表从中选择,从中获取 row_number() 并限制为 257。交叉连接到
SELECT '400005' as COLUMN1, 'DB' as COLUMN2 from sysibm.sysdummy1) -
你到底想做什么?您应该不需要 255 Union All 语句附近的任何地方。我们能否获得更多有关您的表的上下文以及查询应该做什么?
标签: sql db2 squirrel-sql