我正在执行选择查询。当表数为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"
。我已经搜索了这个问题,并且知道这是一个空间大小的问题。我已将logproimary的大小增加到8,将logsecond的大小增加到16,但这也不起作用。
在下面的查询中
select * from SERVEIT.ibasemaster,
SERVEIT.ticket,
SERVEIT.PSEUDOTICKETDETAILS,
SERVEIT.ticketdetails,
SERVEIT.obligationtypemaster,
SERVEIT.STATUSMASTER;
您正在执行的是列出的六个表之间的交叉联接,因为该ON
子句中没有子句,也没有任何联接条件WHERE
。我的猜测是,当您命中10个表时,结果集变得如此之大,以致无法容纳到内存中,或者超过了DB2施加的内存限制。
如果您确实打算进行交叉联接,那么您唯一的选择可能是以某种方式增加内存。但是更好的解决方案是添加一个ON
子句并限制连接结果集的大小。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句