oracle关联三张表查询太慢

oracle中有三张表,都有关联关系的索引,A表关联B表,B表关联C表,从而取出C表中的一些数据,但这样关联后查询速度非常慢,有没有什么办法能快些啊。而且只能用这种形式的... oracle中有三张表,都有关联关系的索引,A表关联B表,B表关联C表,从而取出C表中的一些数据,但这样关联后查询速度非常慢,有没有什么办法能快些啊。而且只能用这种形式的sql语句,如下:
select id,name,
(select max(num) from b inner join c on b.Nid=c.Nid where b.id=a.id)
from a 这种语句速度太慢了,有没有什么办法可以改造一下啊。
展开
 我来答
legendannexuls
2011-03-08 · TA获得超过164个赞
知道小有建树答主
回答量:134
采纳率:0%
帮助的人:101万
展开全部
select a.id,a.name,max(b.num)
from a,b
where a.id = b.id
and exists(
select 1
from c
where b.nid = c.nid
)
group by a.id,a.name,b.num

使用exists可以减少很多次数据关联的次数,试试看,如果满意请加分,谢谢!
百度网友303bb38
2011-03-08 · TA获得超过411个赞
知道小有建树答主
回答量:408
采纳率:0%
帮助的人:298万
展开全部
每张表加个索引,查询时就会快一点的。
给COMPANY表加索引PK_COMPANY,COMPANY的主键为COMPANY_ID,TEST_DB为表空间
CREATE UNIQUE INDEX PK_COMPANY ON COMPANY
(COMPANY_ID)
LOGGING
TABLESPACE TEST_DB
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
MINEXTENTS 1
MAXEXTENTS 2147483645
PCTINCREASE 0
BUFFER_POOL DEFAULT
)
NOPARALLEL;

ALTER TABLE COMPANY ADD (
CONSTRAINT PK_COMPANY
PRIMARY KEY
(COMPANY_ID)
USING INDEX
TABLESPACE TEST_DB
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
MINEXTENTS 1
MAXEXTENTS 2147483645
PCTINCREASE 0
));
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
flyingFish211
2011-03-08 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.5万
采纳率:50%
帮助的人:1.1亿
展开全部
Try this one:
select a.id,a.name, t2.maxNum
from a INNER JOIN (SELECT b.id, max(b.num) AS maxNum from b inner join c on b.Nid=c.Nid GROUP BY b.id) t2
ON a.id = t2.id
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式