2017-05-24 1 views
-1

아래의 SQL 쿼리 속도를 향상시킬 수 있습니까?SQL 최적화 (그룹화 및 최대)

select 
    max(xtrid) as xtrid 
    , jid 
from jpltab jl 
    inner join rb_cust u 
    on jl.custid = u.custid 
where jl.tpe = 'Y' 
    and jl.jid in (51, 52, 53, 54, 55) 
    and u.org = 'INVCE' 
group by jid 
order by xtrid desc; 

감사

+1

인덱스 추가 .... –

+0

실행 계획을 포함시킬 수 있습니까? – VDK

+0

'Where' 절의'jl.jid'가 연속적인 숫자를 가지고 있으므로'IN (51, 52, 53, 54, 55) '대신에'51와 55 사이'로 변경하십시오. 이렇게하면 더 나은 성능을 얻을 수 있습니다. 여기를 참조하십시오 ... https://stackoverflow.com/questions/3308280/is-there-a-performance-difference-between-between-in-with-mysql-or-in-sql-in –

답변

-3

이미 최대

+0

각 그룹의 최대 값 선택 ... –

+0

예 ... 각 그룹의 최대 값을 선택하려면 그룹별로 값을 정렬 할 필요가 없습니다. – heyhey

1

이 당신의 쿼리입니다 선택하고과 같이 'order by xtrid desc'를 꺼낼 수 있습니다

select jl.jid, max(xtrid) as xtrid 
from jpltab jl inner join 
    rb_cust u 
    on jl.custid = u.custid 
where jl.tpe = 'Y' and 
     jl.jid in (51, 52, 53, 54, 55) and 
     u.org = 'INVCE' 
group by jl.jid 
order by xtrid desc; 

나는 인덱스로 시작하는 것입니다. 마음에 떠오르는 것은 jpltab(tpe, jid, custid)rb_cust(custid, org)입니다.