안녕하세요.
마지막 필터에서 ARRAY SIZE로 운반될때 이해가 잘 안되는부분이있어 여쭤봅니다.
FROM TAB1, TAB2
WHERE TAB1.KEY = TAB2.KEY
AND TAB1.FIELD1 = 'A'
AND TAB1.FIELD2 LIKE '2014%'
AND TAB2.FIELD3 = '5'
예로 위와같은 쿼리문이 있다고 봤을때 마지막 AND절에 TAB2.FIELD3 = '5' 부분이
TAB2.KEY + TAB2.FIELD3 으로 결합인덱스 인경우에는 같이 필터가 된다는건 이해가 되는데
그렇다면 마지막 AND TAB2.FIELD3 인덱스가 안 걸려있다면 필터를 안하고
바로 다음 INDEX를 타러간다는 말인가요?
그렇게 된다면 출력버퍼에는 언제 내보내는지도 이해가 되질 않습니다.
질문이 잘 전달됬는지 모르겠네요.
유명한 DB책이 많아 다 펴놓고 부족한 부분들은 보충하면서 공부하는데
이런 내부적인 어려움에 부딪히면 이해하는데 많이 부족합니다.
감사합니다.
○ 처리단계 : 1.인덱스 > 2.필터 > 3.테이블 > 4.필터 > 5.버퍼 > 6.전송
- 처리 단계의 뒤에서 걸러낼수록 비효율이고, 앞에서 걸러낼수록 효율인거죠.
○ 조인의 경우엔 좀더 단계가 복잡해 지겠지요.
- 조인일 때는 위의 (1,2,3,4)단계가 중첩된다고 보시면 될 듯.
가. 1 에서 5 로 바로 갈수 있는 경우가 가장 효율인거구요.
- 인덱스에 조건항목및 조회항목이 모두 있는 경우
나. 질문에 해당하는 경우
- (key, field3)인 경우 2개 조건을 모두 이용해 1.인덱스를 타므로 2.필터는 안하죠.
- (key, field2, field3)인 경우 key 항목만 1.인덱스를 타고 field3은 2.필터를 하죠.
- (key)인 경우 key 항목만 1.인덱스를 타고 field3은 4.필터를 하죠.
- 필터와 버퍼는 무관 할 듯 합니다. 버퍼는 5,6번에만 해당될 듯