how to tuning this SQL

[复制链接]
查看11 | 回复3 | 2005-10-30 17:05:33 | 显示全部楼层 |阅读模式
three tables A B C
index pk on A, B, C
SELECT
A.PK
A.Col1
B.Col1
C.Col1
FROM A,B,C
WHERE
A.PK=B.PK AND A.PK=C.PK
Thanks!
by the way, how to do this:
如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表。
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
这个sql的执行计划?
可优化的地方不多,除非这个sql执行次数非常多,一定要进行优化
那,可以在(A.pk,a.col1),(b.pk,b.col1),(c.pk,c.col1)上建索引
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
A B C 各为多大?
如果有大有小,考虑把小表放在第一位,加ordered use_nl的hint ,
如果大小差不多,考虑使用hash join ……
当然,analyze all tables + indexes , 让CBO自己选择也许更为简单……
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
by the way, how to do this:
如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表。 [/B]

这个oracle自己会找
可调的,好像只有根据表的大小判断那个表连接比较好。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行