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 这种语句速度太慢了,有没有什么办法可以改造一下啊。 展开
select id,name,
(select max(num) from b inner join c on b.Nid=c.Nid where b.id=a.id)
from a 这种语句速度太慢了,有没有什么办法可以改造一下啊。 展开
3个回答
展开全部
每张表加个索引,查询时就会快一点的。
给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
));
给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
));
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
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
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询