select b.prd_inst_id,b.acct_nbr_97
from (select b.acct_nbr_97,b.prd_inst_id
from (select distinct b.prd_inst_id
from eda.tb_b_ft_ofr_inst_day_562 partition(p12) a,
eda.tb_b_ft_prd_inst_day_562 partition(p12) b
where a.ofr_inst_id=b.ofr_inst_id and a.OFR_NET_NUM=1 and to_char(a.crt_date,'yyyymmdd')<='20110613' and a.ofr_id in (500278300,500278301)) a,
eda.tb_b_ft_prd_inst_day_562 partition(p12) b
where a.prd_inst_id=b.prd_inst_id) a,
eda.tb_b_ft_prd_inst_day_562 partition(p12) b
where a.acct_nbr_97=b.acct_nbr_97这个是我完全根据逻辑意思写的 感觉很混乱 不知道怎么改了。。 请高人指点一下
from (select b.acct_nbr_97,b.prd_inst_id
from (select distinct b.prd_inst_id
from eda.tb_b_ft_ofr_inst_day_562 partition(p12) a,
eda.tb_b_ft_prd_inst_day_562 partition(p12) b
where a.ofr_inst_id=b.ofr_inst_id and a.OFR_NET_NUM=1 and to_char(a.crt_date,'yyyymmdd')<='20110613' and a.ofr_id in (500278300,500278301)) a,
eda.tb_b_ft_prd_inst_day_562 partition(p12) b
where a.prd_inst_id=b.prd_inst_id) a,
eda.tb_b_ft_prd_inst_day_562 partition(p12) b
where a.acct_nbr_97=b.acct_nbr_97这个是我完全根据逻辑意思写的 感觉很混乱 不知道怎么改了。。 请高人指点一下
解决方案 »
- 为什么我连oracle 11g的启动界面都看不到,就我遇到,不会吧
- 如何简便地将一台机器上的oracle数据库迁移到另一台机器上
- oracle 11g这是什么原因
- 请问这样的语句查询出来为什么很慢,有没有优化的方案
- 层次结构表合并字段内容的问题,求查询语句
- 关于oracle的安装时内存的需求
- 请帮忙写一函数根据传入的变量读取序列,解决立即送分,另一帖子还有100一起送出!
- windows客户端连接linux上oracle数据库问题!!在线,急!!!
- ***********************VC调用存储过程一个奇怪的问题******************
- 菜鸟问题:为什么字段DATE类型,不能保存数据?刚学。。。
- oracle的regExp_like函数 如何匹配出“多行(大于一行的)的记录”
- oracle的impdp和expdp的用法
from (select b.acct_nbr_97, b.prd_inst_id
from (select distinct b.prd_inst_id
from eda.tb_b_ft_ofr_inst_day_562 partition(p12) a,
eda.tb_b_ft_prd_inst_day_562 partition(p12) b
where a.ofr_inst_id = b.ofr_inst_id
and a.OFR_NET_NUM = 1
and crt_date <= to_date('20110613','yyyy-mm-dd')
and (a.ofr_id = 500278300 or a.ofr_id=500278301)) a,
eda.tb_b_ft_prd_inst_day_562 partition(p12) b
where a.prd_inst_id = b.prd_inst_id) a,
eda.tb_b_ft_prd_inst_day_562 partition(p12) b
where a.acct_nbr_97 = b.acct_nbr_97-------单单从SQL上看,就这个多。
1、不要在查询条件的列上使用函数,这可能导致你该列上有索引也会用不上(除非建立函数索引)。
2、多次使用同一表最好使用with命名子查询
3、其它根据你执行计划情况
WITH tb AS
(SELECT * FROM eda.tb_b_ft_prd_inst_day_562 PARTITION(p12))
SELECT b.prd_inst_id, b.acct_nbr_97
FROM (SELECT b.acct_nbr_97, b.prd_inst_id
FROM (SELECT DISTINCT b.prd_inst_id
FROM eda.tb_b_ft_ofr_inst_day_562 PARTITION(p12) a, tb b
WHERE a.ofr_inst_id = b.ofr_inst_id
AND a.OFR_NET_NUM = 1
AND a.crt_date<=date'2011-06-13'
AND a.ofr_id IN (500278300, 500278301)) a,
tb b
WHERE a.prd_inst_id = b.prd_inst_id) a,
tb b
WHERE a.acct_nbr_97 = b.acct_nbr_97