表a(a1(PK),a2,a3)
表b(b1(PK),b2,b3,a1)
表c(b1(PK),c2,c3,a1)
都是大数据量表
a:b=n:1
b:c=1:1
下面语句怎么优化下(查询字段都有索引)
select *
from a,b,c
where a.a1=b.a1 and b.b1=c.b1 and c.c2 between 开始时间 an 结束时间 and b.b2='1'
表b(b1(PK),b2,b3,a1)
表c(b1(PK),c2,c3,a1)
都是大数据量表
a:b=n:1
b:c=1:1
下面语句怎么优化下(查询字段都有索引)
select *
from a,b,c
where a.a1=b.a1 and b.b1=c.b1 and c.c2 between 开始时间 an 结束时间 and b.b2='1'
*
from a,c,b
where a.a1=b.a1 and b.b1=c.b1 and c.c2 between 开始时间 an 结束时间 and b.b2='1'
比如,c的begin_date和end_date可以大量过滤数据的话,就要强制使用c2上的索引,并让c2在执行计划中尽量靠前
---------
oracle 10G后,对表的顺序和字段关联顺序无关
from a,
(select * from b where b2='1' )b,
(select * from c where c2 between 开始时间 an 结束时间 )c
where a.a1=b.a1 and b.b1=c.b1