我正在执行一个选择查询。当表的数量为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,但这也无效。
答案 0 :(得分:1)
在以下查询中
4 | xyz | 1 |1 | 4
您正在进行的是列出的六个表之间的交叉连接,因为没有select * from SERVEIT.ibasemaster,
SERVEIT.ticket,
SERVEIT.PSEUDOTICKETDETAILS,
SERVEIT.ticketdetails,
SERVEIT.obligationtypemaster,
SERVEIT.STATUSMASTER;
子句,ON
子句中也没有任何连接条件。我的猜测是,当你点击10个表时,结果集变得如此之大,以至于它无法容纳到内存中,或者超出了DB2强加的内存限制。
如果您真的打算进行交叉连接,那么您唯一的选择可能是以某种方式增加内存。但更好的解决方案是添加WHERE
子句并限制连接结果集的大小。
答案 1 :(得分:0)
你可能在select子句的不同表中有相同的列,你必须在select中有所有列的uniqu name