온라인 화면에 적용하는 페이지 처리가 효율적인 수행이 되기 위한 또 다른 필수 요건은 Where 절에서 처리하는 조건과, 인덱스의 컬럼 구성순서, 그리고 Order By 절 순서가 일치 해야 한다는 것이다. 그런데 From절에 여러 테이블이 존재할 경우, 반드시 위의 내용을 가진 테이블부터 수행되어야 한다. 이해를 돕기 위해 예를 들어 설명하도록 하겠다. 아래와 같은 상황의 SQL 이 있다 가정하자.
부분범위 처리가 불가능한 예
WHERE 조건 : A, B 컬럼에 대한 조건이 있음. (둘 중 하나가 =조회가 아님)
인덱스 순서 : A, B, C, D 순으로 된 결합 인덱스 존재 (인덱스 컬럼 중 A, B 사용)
ORDER BY : C, D 인덱스 컬럼 중 A, B 는 제외한 나머지 컬럼으로 정렬
위의 예와 같이 Where 절 조건 컬럼인 A, B 둘 중 하나라도 EQUAL 조회가 아닌 경우에는 부분범위 처리가 불가하다.
왜냐하면, 데이터가 C, D 순으로 정렬될 경우 인덱스 컬럼 중 선행 컬럼인 A 나 B 가 EQUAL 조회가 아니라면, 인덱스가 가진 정렬을 이용할 수 없기 때문이다.
즉, A 와 B 컬럼 모두 EQUAL 조회를 했다면 Order By 절에 C, D 컬럼만 있어도 인덱스의 정렬된 데이터를 정렬 처리에 사용할 수 있지만 만약, A, B 컬럼 중 A 컬럼이 EQUAL 조회가 아니라면 Order By 절을 C, D 에서 A, B, C, D 로 변경해야 인덱스의 정렬된 데이터로 정렬 처리를 대체할 수 있어 부분범위 처리가 가능해진다.
앞에서 알아 본 Where 절, 인덱스 구성, Order By 절의 구성이 부분범위 처리가 가능한 경우를 정리하면 아래와 같다.