我有一个包含三个表A,B和C的DB2数据库。
因此创建了数据库:
创建数据库数据库别名DB AUTOMATIC STORAGE YES ON / home / db2inst1 使用代码集UTF-8领域到PAGESIZE 32768
所有表都有列PID
我需要一个表格来汇总表B和C中的一些信息。选择适当项目的查询是:
SELECT
T.*,
(
SELECT
COALESCE(SUM(ROW_COUNT),0)
FROM
C as ITS,
B as ITL
WHERE
ITS.ROLE = 1
AND ITS.PID = ITL.PID
AND ITS.PID_S = ITL.C_SOURCE
AND ITS.PID = T.PID
) AS RR
FROM
A as T;
运行此查询时,DB2服务器会快速使用大约3Gb内存。然而,使用top,CPU使用率很少超过5%,有些跳跃到大约13%。 DB2服务器是RedHat6.2 VM,每个内核有4个内核和2Ghz。
我让这个查询运行了24小时,似乎没有任何事情发生。其他查询,如简单选择等等,可以顺利运行。
问题:
答案 0 :(得分:3)
我会尝试“解释”功能,看看db2在你的查询中做了什么
db2exfmt -d database -e schema -t -v%-w -1 -s% - #0 -n%-g OTIC
答案 1 :(得分:1)
您使用嵌套选择,我建议在第二个查询中调用您的表A,并将连接条件保留在表A和表C中。
我认为它可以优化查询的响应时间,但这一切都取决于表的创建(例如索引声明)。
致以最诚挚的问候,