2016-12-06 7 views
0

내 엔티티 중 하나에 부울 속성이 있습니다. linq 쿼리 중 하나가이 속성에서 필터링됩니다. DotConnect 비효율적 인 부울 비교 SQL 생성

context.Items.Where(one => one.BoolProperty == true) 

내가 생성 된 SQL 코드를 볼

은, 다음 쿼리는 데이터베이스 인덱스를 가지고 있지만, 전체 테이블에 액세스 할 수 있습니다하지 않는 한 이것은 분명히 문제가

... WHERE "Extend1".BOOL_PROPERTY <> 0 

로 변환됩니다.

우리는 닷넷 4.6을 사용하고는, 엔티티 프레임 워크는 6, DevArt 8.5 및 Oracle 12은 오라클의 부울 필드는 숫자입니다 (1,0)

+0

이 경우 비트 맵 인덱스가 작동합니다. 그러나 비트 맵 인덱스가 항상 적절한 것은 아닙니다. [비트 맵 인덱스 대 B- 트리 인덱스 : 어느 시점 및 언제?] (http://www.oracle.com/technetwork/articles/sharma-indexes-093638.html)를 참조하십시오. 'Where (one => one.BoolProperty! = false)'를 시도 했습니까? –

답변

1

코드에서 다음과 같은 옵션을 설정하십시오 :

config.QueryOptions.TrueValueNumber = TrueValueNumber.One; 

자세한 내용은 https://www.devart.com/dotconnect/oracle/docs/?QueryOptions.html을 참조하십시오.

+0

와우,이 동작을 무시할 수있는 구성 옵션이 있다고 확신했습니다! 그러나 나는 그것이 TrueValueNumber라고 추측했을 것입니다. 감사 – StefanG