full scan 밖에 않되는건가요...? 도움부탁드립니다. 0 5 669

by 안동인 [2008.01.07 19:57:53]


안녕하세요. DBA 처럼 DB를 잘 만지작거리고 싶은 초봅니다.

계속 Full 스캔이 나서 질문드립니다.

다음 쿼리에서

 

    select oid from tbl_poi_A
    where (code != F3 )
                and (address like '서울%') and name1 like '%식당%')

 

 또는

    select oid from tbl_poi_A

    where (code >= 'A' and code <= 'F')
                and (address like '서울%') and name1 like '%식당%')

이렇게 해 봤는데요, 계속 full scan이 나네요.

 

테이블이 약 50만건 되는데, like를 쓰지 않으 수 없고, code3에서 '!=' 을 쓰면 인덱스를 걸 수 없다고 해서 범위연산자로 바꿔서 했는데도 않되네요.

name은 양방향 like를 걸 수 밖에 없는데, 어떻게 해야 하는지 잘 모르겠습니다.

 

조언 부탁드립니다.

by 채용근 [2008.01.07 00:00:00]
CODE에 인덱스가 걸려있나보져?

CODE가 50만건중에 얼마나 분포도가 좋은지를 따져야 합니다. 분포도가 나쁘면 플랜은 FULL로 풀립니다.

by 안동인 [2008.01.07 00:00:00]
네 code에 인덱스가 걸려있습니다. code는 'A~Q' 범위에 있습니다. 전체적으로 다 보지 않았지만 분포도가 좋지는 않을거 같습니다. 결국 FULL로 가는방법밖에 없나요?

by 채용근 [2008.01.07 00:00:00]
정확히 보진 못했지만 분포도가 좋지 않다면 FULL로 가는게 낳을겁니다.

by 현 [2008.01.08 00:00:00]
전체 데이터의 10~15% 이상을 엑세스 한다면 인덱스 스캔보다 풀스캔이 훨씬 유리합니다.

by 안동인 [2008.01.08 00:00:00]
네 답변 감사드립니다. 사용자가 많아서 조건을 약식화 아니면 FULL 스캔해야겠네요 음...
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입