2009-07-02 4 views
0

Year-Week-Mine-Product에 대한 몇 가지 통계 보고서를 작성하는 SQL 쿼리를 작성했습니다.가입시 SQL 쿼리가 응답하지 않는다

정확히 하나만 제외하고는 - trn.wid-date은 사용할 정확한 날짜가 아닙니다.

td.datetime-act-comp-dump을 사용해야합니다. trn.wid-datetd.datetime-act-comp-dump으로 바꿀 때 오류가 발생하지는 않지만 무한정 지연되는 것 같습니다. 나는 어제 잠시 동안 그것을 보냈고 ORA-01652는 그 이후로 그 오류를 보지 못했지만 TEMP 테이블 스페이스에서 128으로 임시 세그먼트를 확장 할 수 없었습니다.

내가 성공적으로 그냥에서

select to_char(trn.wid_date, 'IYYY') as dump_year, 
     to_char(trn.wid_date-7/24, 'IW') as dump_week, 
     SUBSTR(trn.train_control_id,1,2) as Mine, 
     vcon.product_type_code as Product, 
     COUNT(DISTINCT trn.train_control_id) as Trains, 
     COUNT(1) as Wagons, 
     MIN(trn.wid_date) as Min_WID_Hrs, 
     MAX(trn.wid_date) as Max_WID_Hrs, 
     MIN(td.datetime_act_comp_dump) as Min_Fin_Dump, 
     MAX(td.datetime_act_comp_dump) as Max_Fin_Dump,   
     ROUND(SUM(con.weight_total-con.empty_weight_total),0) as Tot_Tonnes,  
     ROUND(AVG(con.weight_total-con.empty_weight_total),2) as Avg_Tonnes, 
     ROUND(MIN(con.weight_total-con.empty_weight_total),2) as Minimum, 
     ROUND(PERCENTILE_DISC(0.99) WITHIN GROUP (ORDER BY (con.weight_total-con.empty_weight_total) DESC),2) as "1st",  

from widsys.consist con 
     INNER JOIN widsys.train trn 
     USING (train_record_id) 
     INNER JOIN tpps.train_details td 
     ON trn.train_tpps_id||trn.mine_code = td.train_id||td.mine_code 
     INNER JOIN widsys.v_consist_ore_detail vcon 
     USING (consist_id) 

where trn.direction = 'N' 
     and to_char(trn.wid_date, 'IYYY') = 2009 
     and to_char(trn.wid_date-7/24, 'IW') = 25 

group by to_char(trn.wid_date, 'IYYY'), 
     to_char(trn.wid_date-7/24, 'IW'), 
     SUBSTR(trn.train_control_id,1,2), 
     vcon.product_type_code 

order by to_char(trn.wid_date-7/24, 'IW') DESC 

아래의 쿼리에서 MAX (td.datetime-ACT-COMP-덤프)를 반환 할 수 있어요 점을 고려하는 것이 원인이 될 수 이해하지 않는다 문제를 해결하려면 위의 쿼리에서 vcon과 함께 할 모든 것을 제거하고 trn.wid_datetd.datetime-act-comp-dump으로 바꿔보십시오. 그 효과는 년 - 주 - 광산 - 대신 년 - 주 광산에 대해서만보고한다는 것입니다. (아래 쿼리 참조)

이 새로운 쿼리는 실제로 행글라이딩보다는 실행되지만 약간 이상한 결과를 반환하며 제품에서 문제가 발생하지 않으므로 충분하지 않습니다.

select to_char(td.datetime_act_comp_dump, 'IYYY') as dump_year, 
     to_char(td.datetime_act_comp_dump-7/24, 'IW') as dump_week, 
     SUBSTR(trn.train_control_id,1,2) as Mine, 
     --vcon.product_type_code as Product, 
     COUNT(DISTINCT trn.train_control_id) as Trains, 
     COUNT(1) as Wagons, 
     MIN(trn.wid_date) as Min_WID_Hrs, 
     MAX(trn.wid_date) as Max_WID_Hrs, 
     MIN(td.datetime_act_comp_dump) as Min_Fin_Dump, 
     MAX(td.datetime_act_comp_dump) as Max_Fin_Dump,   
     ROUND(SUM(con.weight_total-con.empty_weight_total),0) as Tot_Tonnes,  
     ROUND(AVG(con.weight_total-con.empty_weight_total),2) as Avg_Tonnes, 
     ROUND(MIN(con.weight_total-con.empty_weight_total),2) as Minimum, 
     ROUND(PERCENTILE_DISC(0.99) WITHIN GROUP (ORDER BY (con.weight_total-con.empty_weight_total) DESC),2) as "1st"  

from widsys.consist con 
     INNER JOIN widsys.train trn 
     USING (train_record_id) 
     INNER JOIN tpps.train_details td 
     ON trn.train_tpps_id||trn.mine_code = td.train_id||td.mine_code 
     --INNER JOIN widsys.v_consist_ore_detail vcon 
     --USING (consist_id) 

where trn.direction = 'N' 
     and to_char(td.datetime_act_comp_dump, 'IYYY') = 2009 
     and to_char(td.datetime_act_comp_dump-7/24, 'IW') = 25 

group by to_char(td.datetime_act_comp_dump, 'IYYY'), 
     to_char(td.datetime_act_comp_dump-7/24, 'IW'), 
     SUBSTR(trn.train_control_id,1,2) 
     --vcon.product_type_code 

order by to_char(td.datetime_act_comp_dump-7/24, 'IW') DESC 

무엇이 잘못 될지 조언 해주세요.

건배,

토미

답변

0

widsys 테이블과 tpps 테이블에 대한 하위 쿼리를 만들어 muuuuuuuch를 더 빠르게 실행할 수있었습니다. 그런 다음 연결하는 대신 두 개의 열에 암시 적 내부 조인을 수행하십시오.

SELECT blah FROM (widsys subquery) w, (tpps subquery) t WHERE w.mine_code = t.mine_code and w.train_id = t.train_tpps_id 
1

내가 더 많은 정보를 train_detailsdatetime_act_comp_dump 열이 인덱싱되지 않고 wid_date는 점이다없이 생각할 수있는 유일한 것. 이것은 무언가가 색인되지 않았거나 traintrain_details 테이블이 극적으로 다른 크기이고 조인이 폭발하는 꽤 일반적인 성능 문제와 같습니다.

어떤 DB를 사용하고 있는지 잘 모르겠지만 쿼리 실행 계획 프로파일 러를 실행하고 두 실행 계획의 차이점을 확인하는 방법을 알고 싶을 수도 있습니다. 그 대답은 무언가 구조가 될 것 같아요. 또는 조인 문의 연결이 DB 관련 문제를 일으키는 것 같습니다.

관련 문제