我正在执行select查询。当表数为10或小于10时,查询执行良好。
select * from SERVEIT.ibasemaster,
SERVEIT.ticket,
SERVEIT.PSEUDOTICKETDETAILS,
SERVEIT.ticketdetails,
SERVEIT.obligationtypemaster,
SERVEIT.STATUSMASTER;但当表数增加时,超过10个查询不执行,并给出错误代码"DB2 SQL Error: SQLCODE=-968, SQLSTATE=57011, SQLERRMC=null, DRIVER=4.21.29"。我已经搜索了这个问题,并知道这是一个空间大小的问题。我已经将逻辑元大小增加到8,log秒大小增加到16,但这也不起作用。
发布于 2017-01-10 05:52:49
在下面的查询中
select * from SERVEIT.ibasemaster,
SERVEIT.ticket,
SERVEIT.PSEUDOTICKETDETAILS,
SERVEIT.ticketdetails,
SERVEIT.obligationtypemaster,
SERVEIT.STATUSMASTER;您所做的是在列出的六个表之间进行交叉连接,因为没有ON子句,WHERE子句中也没有任何连接条件。我的猜测是,当您命中10个表时,结果集变得非常大,以致于无法容纳内存,或者超过了DB2施加的内存限制。
如果您真的打算进行交叉连接,那么您唯一的选择可能是以某种方式增加内存。但是更好的解决方案是添加一个ON子句并限制连接结果集的大小。
发布于 2017-01-10 07:11:00
可能在select子句的不同表中有相同的列,则必须在select中为所有列设置一个单曲名称。
https://stackoverflow.com/questions/41561927
复制相似问题