具有高成本的合并笛卡尔联接。
我们正在查询数据库以填充一些已记录的凭单,但是形成查询导致了上述问题,并且由我们的绩效团队进行了沟通。
在这里,我从事Java编程工作,对这些连接没有太多的了解。有人可以帮我解决一下查询下面的问题,以避免合并具有高成本的笛卡尔联接。
FROM
SERVICE_REQ SR,
SR_COBRAND_DATA SR_COB_DATA,
REPOSITORY rep,
SR_ASSIGNEE_INFO ASSIGNEE_INFO
WHERE
SR.SR_COBRAND_ID=rep.COBRAND_ID
AND SR.SERVICE_REQ_ID=SR_COB_DATA.SERVICE_REQ_ID (+)
AND SR.SERVICE_REQ_ID = ASSIGNEE_INFO.SERVICE_REQ_ID (+)
AND SR.SR_COBRAND_ID = 99
答案 0 :(得分:0)
只是一个建议
您不应使用旧的隐式连接sintax,而应使用显式的join sintax
const TitleBar = require('frameless-titlebar');
无论如何,根据此条件,表之间没有笛卡尔积,但是带有SR_COBRAND_DATA和SR_ASSIGNEE_INFO的SERVICE_REQ的左连接减少了与REPOSITORY的内部连接
可能是为了解释您的目标,您应该添加适当的数据样本以获取预期结果和实际结果
答案 1 :(得分:0)
在表SERVICE_REQ的SR_COBRAND_ID和SERVICE_REQ_ID列上创建一个复合索引
-在SERVICE_REQ(SR_COBRAND_ID,SERVICE_REQ_ID)上创建索引[indexname];