index fast full sacn은 일반적인 경우 자제하는 것이 좋은 건가요? 0 3 1,282

by 물통20병 [Oracle Tuning] 튜닝 fast full scan [2017.08.16 12:00:08]


안녕하세요

fast full scan은 멀티블록으로 읽어들이기 때문에 정렬을 보장하지 않는 다고 알고 있습니다.

더불어 무작위로 읽기 때문에 실행시간이 일정하지 않다는 단점이 있는데

그러면 일반적인 경우에 index fast full scan은 사용하지 않는 편이 좋은건가요??

어떻게 판단을 해야하는지 잘 모르겠습니다.

조언 부탁드리겠습니다. ㅜ

by 신이만든짝퉁 [2017.08.16 12:15:10]

인덱스가 있는 테이블의 row수를 count할 때 index fast full scan이 일어나는데요. (예: select count(*) from 테이블)

이런경우 table full scan보다 훨씬 빠릅니다. 

인덱스는 상황에 맞는 쓰임새가 있으니, 필요하면 써야합니다. 일반적인 경우가 무엇인지는 모르겠으나, 사용을 자제해야 한다는 것은 옳지 않습니다.

 


by 마농 [2017.08.16 13:10:37]

일반적인 상황이라는 것은 없습니다.
그때 그때 상황에 따라 다르게 판단해야 합니다.
일반적인 다른 기능들을 판단할 때는 위와 같이 종합적으로 판단해야 하는데.
index_ffs 의 경우는 좀 독특해서 그냥 판단이 쉬울 듯 하네요.
index_ffs 사용하는 게 좋습니다.

index_ffs 의 경우 사용할지 말지를 결정할 수 있는게 아니라
사용할 수 있는 경우는 극히 제한적이며
사용할 수 있는 경우라면 매우 유용한 기능입니다.
사용하지 말아야 한다는 것은 말이 안됩니다.

적어 놓으신 단점들은 단점이라 하기엔 억지스러운 면이 있네요. 그냥 특성 정도.


by jkson [2017.08.16 14:34:57]

보통은 옵티마이저가 index fast full scan을 해야하는 상황이 맞다고 판단하여

활용하게 되는데 옵티마이저가 index_ffs 사용한다고 해서 항상 옳은 것은 아니라고 생각합니다.

index fast full scan을 해야 하는 상황이 맞는지 판단하는 게 제일 중요할 것 같구요.

예를 들어 a, b, c로 구성된 인덱스가 있을 때

select a, b, c from table

where substr(a,1,6) = '201708'

이런 쿼리를 사용하면 index fast full scan이 됩니다.

옵티마이저가 index fast full scan으로 판단했지만

사실은

select a, b, c from table

where a like '201708%' 이 더 나은 쿼리죠.

꼭 사용하지 않아도 될 상황에 index_ffs 하고 있는지,

혹은 별도 인덱스를 추가하여 더 나은 성능을 보장할 필요가 있는지

판단하는 게 중요할 것 같습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입