【发布时间】:2012-08-30 10:20:46
【问题描述】:
SELECT T1.DESCRIPTION,
T1.NAME,
T1.EXTERNALKEY,
T2.STATECODE
FROM TABLE1 T1, TABLE2 T2, TABLE3 T3
WHERE T1.CLASSID = 7040
AND T2.ID = T3.ID
AND T2.RECEIVERID = T1.ID
AND T1.OWNERID = (SELECT ID
FROM TABLE1
WHERE EXTERNALKEY = 'XXX')
MINUS
SELECT T1.DESCRIPTION,
T1.NAME,
T1.EXTERNALKEY,
T2.STATECODE
FROM TABLE3 T3, TABLE1 T1, TABLE2 T2
WHERE VALUE = 'XXXX' AND T3.ID = T1.ID;
嗨。这是我的执行查询,它需要很长时间。任何人都可以将其更改为优化的。谢谢你
【问题讨论】:
-
愿意分享您的表格结构吗?另外:您的数据库中有哪些类型的索引?
-
表 2 没有出现在查询第二部分的 where 子句中,您得到的是笛卡尔积...希望这是您的意图。
-
@Mat +1 好地方,使用正确的连接语法会更容易!
-
阅读(并接受!)这个:Bad habits to kick : using old-style JOINs
-
在不知道更多关于你的表的情况下,为什么这是“进展缓慢”(解释计划),以及你到底在做什么(即这个查询回答的问题是什么),有任何人都无能为力。
标签: sql oracle toad execution-time