- 日志
- 好友
- 卖家信用
- 买家信用
- 注册时间
- 2008-7-13
- 在线时间
- 小时
|
发表于 2009-9-26 09:25:28
|
显示全部楼层
SELECT
a.*
FROM
tab_a a
WHERE
NOT EXISTS (
SELECT
'X'
FROM
tab_b b
WHERE
....
)
AND EXISTS (
SELECT
'X'
FROM
tab_c c
WHERE
....
)
这个SQL里面 表a,b,c评级 所以 按照你说的 “原因是在cost模式下,oracle会自动把小表当基准表。
” 的话 就是c成为基准表了
如果 想先 a, b结合 再跟c结合 可以试一下下面的形式
select c.f1, c.f2, d.f1 ...
from c ,
(select a.f1,a.f2,...
from a, b
where a.fn=b.fn <- a,b表的结合条件
and ... <- 其他条件
) d
where c.f1 = d.f1
and ...
这样 就可以做到 先让 a, b结合得到结果作为中间表(d), 然后将中间表d再跟c表结合
cost没有计算过 |
|