bitand 연산을 하면서 index를 사용하게 할수는 없나요? 0 3 1,977

by 하형욱 [2015.12.23 09:19:05]


bit_data.png (14,695Bytes)
bitmap_plan.png (59,761Bytes)

안녕하세요? 

NUMBER 타입의 칼럼을 만들고 bitdata를 넣은 후에

( 정수가 들어있지만 bitdata를 정수로 변환해서 넣은거에요 )

where 조건에 bitand 연산을 시키고 plan을 떠보니 full_scan을 해버리네요

잘 모르는 지식으로 명시적으로 bitmap index도 만들고 해봤는데도 똑같아요

 

칼럼 데이터에 bit sequence를 넣고 (  이런걸 지원하는 다른 column type이 있을런지요?...) bitand 연산해서 가져온 경우에

 

테이블 재설계 없이 index를 사용하게 하는 방법은 없을까요?

고수분들의 고견 부탁드려봅니다.

 

 

PS. bitdata속성을 row로 쪼개서 별도 table과 join하는 방법을 생각해봤는데 C/R/U/D 할때마다 항상 같이 update하거나 join 해야하니 번거롭고 추가 비용이 발생하는 문제는 있지만 select 할때는 index를 타도록 한방에 해결되네요

bit연산이 항상 fullscan이면 이방법밖에 없는것같아요

by 아발란체 [2015.12.23 10:29:37]

비트맵 인덱스는 아키텍쳐를 이용하는 것이라 관계 없는 내용 같고용, 인덱스 항목을 가공하면 인덱스를 탈 수 없는 것이 포인트 같습니다. uid가는 항목이 인덱스 일 때 uid + 1 > 10 식으로 인덱스 항목 uid에 1를 더하여 인덱스 항목을 가공하면 인덱스를 사용 할 수 없습니다. 


by 아발란체 [2015.12.23 10:36:30]

bit연산 값도 고정이 아니라 함수기반인덱스도 사용 할 수 없고.. 해당 모델에서는 인덱스를 못 쓸 것 같습니다. 똑같은 질문 있네요.

http://compgroups.net/comp.databases.oracle.server/fast-bitwise-search/1501471


by 하형욱 [2015.12.23 12:48:21]

감사합니다.. 매우 큰 도움이 되었습니다

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