• 主页
  • Oracle 基础和管理
  • Oracle 高级技术
  • Oracle 认证与考试
silentcross 2007年03月15日
高分求教一sql语的优化
共3张表

表A{a1,a2,a3,a4,a5}
表B {b1,b2,b3,b4,b5}
表C {c1,c2,c3,c4 ,c5}

连接条件
1: A.a1 = B.b1(+) and A.a2 = B.b2(+) and A.a3 = B.b3(+)
2: A.a4 = C.c1(+) and A.a5 = C.c2(+)
3: 麻烦的是这个条件,C中的数据是按c1,c2分组的,条件要求c中的数据所在组中的c3字段值最大的那条数据里对应的c4大于指定的值(假设100)

效果如下:
SELECT
B.b4, C.c5
FROM
A,
B,
C,
(SELECT C.c1,C.c2,C.c4
FROM C,
(SELECT c1, c2, max(c3) c3
FROM C
GROUP BY c1, c2) T2
WHERE
C.c1 = T2.c1 AND C.c2 = T2.c2 AND C.c3 = T2.c3) T1
WHERE
A.a1 = B.b1(+) AND
A.a2 = B.b2(+) AND
A.a3 = B.b3(+) AND
A.a4 = C.c1(+) AND
A.a5 = C.c2(+) AND
C.c1 = T1.c1 AND
C.c2 = T1.c2 AND
T1.c4 > 100

问题是这么写效率太低了,苦思一下午没想出什么办法,求高手指点
...全文
181 点赞 收藏 5
写回复
5 条回复

还没有回复,快来抢沙发~

发动态
发帖子
Oracle
创建于2007-09-28

6391

社区成员

5.4w+

社区内容

Oracle开发相关技术讨论
社区公告
暂无公告