SSISO Community

시소당

OR와 ROWNUM을 같이 사용할 때 주의

1.  OR와  ROWNUM을  같이  사용할  때  주의  (스크린에  20개의  Row만  보여준다.)
    전제:조건절의  3개의  컬럼에  각각  인덱스가  있다.

예)      Select    nibbcode,    NVL(nibbcode,’’)
              From      Sunapiljung
            Where    Rownum  <  21  and  (sunapdes  like  ‘E%’  or  sunapdes  like  ‘F%’)  
                And    sncode  >  :B1;

문제점:  or를  먼저  풀어  냄으로  sunapdes  like  ‘E%’와  sunapdes  like  ‘F%’를  실행한  후  결합한다.  or와  rownum을  같이  사용하면  모든  경우  필터하기  때문에  부분범위  처리를  할  수  없다.
이때는      Select    nibbcode,    NVL(nibbcode,’’)
                            From      Sunapiljung
                          Where    Rownum  <  21  and  (sunapdes||”  like  ‘E%’  or  sunapdes  ||”  like  ‘F%’)  
                                And    sncode  >  :B1;
같이  사용하여  suppressing하여  인덱스를  사용하지  못하게  하여  20개를  먼저  수행하도록  한다.  각  부분의  인덱스를  생성하지말고  sncode와  sunapdes를  결합하는  인덱스를  생성한다.

733 view

4.0 stars