c_plan中大概有40万条记录 下面这条语句是根据输入的开始结束时刻查询每月的计划起飞架次(STD)
但是不知道为什么响应时间很长 有三四分钟 简直不能接受 求大神帮忙改进 提高查询速度 小弟不甚感激 也非常欢迎有其他语句
select to_char(TRUNC (add_months(to_date('2015-08-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS'),(b.no-1)),'mm'),'YYYY-MM') name,
(select count(distinct planid) from c_plan a where (adep ='ZBAA') and
STD BETWEEN TRUNC (add_months(to_date('2015-08-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS'),(b.no-1)),'mm')
and TRUNC (add_months(to_date('2015-08-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS'),b.no),'mm')-1/86400 ) as value
from (select level no from dual connect by level <=
(select ceil(MONTHS_BETWEEN(to_date('2016-10-01 23:59:59','YYYY-MM-DD HH24:MI:SS'),to_date('2015-08-01 00:00:00','YYYY-MM-DD HH24:MI:SS')))from dual)) b
但是不知道为什么响应时间很长 有三四分钟 简直不能接受 求大神帮忙改进 提高查询速度 小弟不甚感激 也非常欢迎有其他语句
select to_char(TRUNC (add_months(to_date('2015-08-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS'),(b.no-1)),'mm'),'YYYY-MM') name,
(select count(distinct planid) from c_plan a where (adep ='ZBAA') and
STD BETWEEN TRUNC (add_months(to_date('2015-08-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS'),(b.no-1)),'mm')
and TRUNC (add_months(to_date('2015-08-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS'),b.no),'mm')-1/86400 ) as value
from (select level no from dual connect by level <=
(select ceil(MONTHS_BETWEEN(to_date('2016-10-01 23:59:59','YYYY-MM-DD HH24:MI:SS'),to_date('2015-08-01 00:00:00','YYYY-MM-DD HH24:MI:SS')))from dual)) b
-- 计划唯一号
planid varchar2(64) ,
-- 添加时间
t_add date default sysdate ,
-- 最后修改时间
t_mod date default sysdate ,
-- 计划终止/删除时间
t_del date ,
-- 计划号
planno number(6) ,
-- 航班号
acid varchar2(8) ,
-- 起飞机场
adep varchar2(4) ,
-- 降落机场
ades varchar2(4) ,
-- 计划起飞时间
std date ,
-- 预计起飞时间
etd date ,
-- 实际起飞时间
atd date ,
-- 计划降落时间
sta date ,
-- 预计降落时间
eta date ,
-- 实际降落时间
ata date ,
-- 实际推出时间
atp date ,
-- COBT
ctp date ,
-- CTOT
ctd date ,
-- TOBT
tobt date ,
-- TSAT
tsat date ,
-- 航空公司输入准备好时间
ardt date ,
-- 开始滑行时间
tax_time date ,
-- 塔台给出准备好时间
rdy_time date ,
-- 计划状态
status varchar2(4) ,
-- 起飞跑道
rwy_dep varchar2(3) ,
-- 降落跑道
rwy_arr varchar2(3) ,
-- 起降标志
flytype number(1) ,
-- 机型
planetype varchar2(4) ,
-- 尾流
turb varchar2(1) ,
-- 备降机场
altn varchar2(4) ,
-- 注册号
plane_ident varchar2(10) ,
-- VIP标志
vvip varchar2(1) ,
-- 任务
task varchar(4) ,
-- 国内外属性
company_country number(1) ,
-- 停机位
gate varchar2(5) ,
-- 翼展
wing varchar(1) ,
-- 可变滑行时间
vtt number(2) ,
-- 大方向
direction number(1) ,
-- 大方向下小方向
dir_detail number(1) ,
-- 离港点
corridor_dep varchar(10) ,
-- 进港点
corridor_arr varchar(10) ,
-- 出界点
point_outer varchar(10) ,
-- 入界点
point_inner varchar(10) ,
-- 对应的流控原因
res_reason number(2) ,
-- 锁定的CTOT
ctd_lock date ,
-- 第一次CTOT
ctdFPL0 date ,
-- 第一次COBT
ctpFPL0 date ,
-- EOBT前1小时的CTOT
ctdFPL6 date ,
-- EOBT前1小时的COBT
ctpFPL6 date ,
-- EOBT前30分钟的CTOT
ctdFPL3 date ,
-- EOBT前30分钟的COBT
ctpFPL3 date ,
-- RDY时的CTOT
ctdRDY date ,
-- RDY时的COBT
ctpRDY date ,
-- 推出时的CTOT
ctdPUSH date ,
-- 推出时的COBT
ctpPUSH date ,
-- LIN时的CTOT
ctdLIN date ,
-- 开始除冰时间
deice_beg date ,
-- 结束除冰时间
deice_end date ,
-- 预计除冰时长
deice_pre number(2) ,
-- 除冰位
deice_pos varchar(10) ,
-- 除冰区
deice_area varchar(10) ,
-- 除冰标志
deice_flag number(1) ,
-- 第一次TSAT
TSAT_first date ,
-- TOBT输入人员
TOBT_name varchar2(10) ,
-- 等待标志
wait_flag number(1) ,
-- 进入等待池方式
wait_reason number(1) ,
-- 出等待池时刻
wait_outTime date ,
-- 出等待池方式
wait_outType number(1) ,
-- 最小TOBT
tobt_min date ,
-- 最大TOBT
tobt_max date ,
-- 航空公司
company varchar(5) ,
-- 分析出来的原因
delay_10 varchar(4) ,
-- 流量系统判断出来的原因
delay_11 varchar(4) ,
-- 塔台给出的原因
delay_12 varchar(4) ,
-- 公司给出的原因
delay_13 varchar(4) ,
-- 前飞航班
prev_planid varchar(64) ,
-- 原始航路
route varchar2(300) ,
-- 解析航路
route_ana varchar2(1024) ,
-- 主航路
route_main varchar(10) ,
-- 输入TOBT的来源
tobt_type number(1) ,
-- 受限标志
limit_flag number(1) ,
-- 备注
add_msg varchar2(200) ,
-- 最终延误原因
delay_reason varchar2(4) ,
-- 实际开始登机时间
ASBT date ,
-- 实际关舱门时间
GCTM date ,
-- 实际除冰开始时间
ACZT date ,
-- 实际除冰结束时间
AEZT date ,
-- 到达除冰等待位时间
DIHD date ,
-- 进入除冰位时间
DIIN date ,
-- 滑出除冰位时间
DITO date ,
-- 塔台原始延误原因
delay_twr_org varchar2(100) ,
-- 入位时间
t_ove date
c.value ,
from (select level no from dual connect by level <=
(select ceil(MONTHS_BETWEEN(to_date('2016-10-01 23:59:59','YYYY-MM-DD HH24:MI:SS'),to_date('2015-08-01 00:00:00','YYYY-MM-DD HH24:MI:SS')))from dual)) b,
(select count(distinct planid) as value from c_plan a where (adep ='ZBAA') and
) c
where c.STD(+) BETWEEN TRUNC (add_months(to_date('2015-08-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS'),(b.no-1)),'mm')
and TRUNC (add_months(to_date('2015-08-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS'),b.no),'mm')-1/86400
;