求指教,oracle的SQL优化问题

roywang 发布于 2012/11/09 09:40
阅读 118
收藏 0

有一段SQL,大意是这样

SELECT A.L,A.X,B.M,...
FROM A
LEFT JOIN (SELECT X,M,N FROM VIEW) B ON A.X=B.X
LEFT JOIN C ON A.X=C.X
...
整段执行需要3.5S

瓶颈在VIEW视图,单执行需要3S多

这个VIEW中,用了一个SELECT DISTINCT,由于DISTINCT引起了性能降低,在查看了数据和业务后发现DISTINCT是多余的,数据肯定不会重复,于是去除了DISTINCT

去除后,VIEW视图只需要0.6S了。

问题来了,VIEW优化后,竟然原SQL执行需要8S了,这是什么道理呢?

(非第一次执行SQL,多次执行SQL取平均值)

加载中
0
linan
linan
看一下执行计划,是不是有全表扫描。
0
IdleMan
IdleMan
是否是因为加distinct时,oracle用loop关联,而不加oracle却认为数据比较大使用hash关联?最好看一下执行计划。
返回顶部
顶部