2013-09-05 3 views
2

SQLite에 문제가있어서 도움이 필요합니다. SQLite 미리 컴파일 된 dll을 사용하여 C# .NET에서 응용 프로그램을 개발 중입니다. 내가 사용하는 버전은 x86의 경우 "1.0.66.0"이고 x64 프로세서의 경우 "1.0.79.0"입니다.SQLite x86에서 ExecuteQuery 명령이 매우 느리게 실행됩니다.

# 1 내가 플랫폼 대상으로 exe를 구축 : 64 및 SQLite는의 x64 버전을로드

나는 다음과 같은 몇 가지 결과

*using (DbDataReader reader = _database.ExecuteQuery(selectCommand))* 

시나리오를 얻기 위해 다음 명령을 사용하여 이 경우 ExecuteQuery는 selectCommand를 실행하고 결과 (37 행)를 1 초 내에 반환합니다.

# 2 나는 플랫폼 대상으로 exe를 구축 : 86을하고하는 executeQuery는 SelectCommand에를 실행 55 초 결과 (37 행) 반환이 경우 SQLite는 의 86 버전을로드합니다.

코드가 완전히 동일하고 변경된 유일한 것은 sqlite dll이므로 두 유형의 프로세서에서 모두 실행되기 때문에 매우 이상합니다.

이 문제를 해결하는 방법에 대한 의견이 있으십니까?

추신. 데이터베이스에서 동일한 명령을 실행하면 수동으로 1 초 안에 데이터가 반환됩니다.

+0

세 가지 경우에 사용하는 SQLite 버전은 무엇입니까? ('SELECT sqlite_version()'시도) –

+0

@CL - 내 SQLite 버전은 3.7.6.1입니다. –

+0

그리고 다른 두 개? –

답변

-1

x64 버전은 쿼리가 x86 버전보다 실행되는 동안 더 큰 가상 공간을 사용합니다. 따라서 x86 플랫폼의 실행 시간은 x64보다 커야하며이를 최소화하는 유일한 방법은 쿼리 테이블에 인덱스를 추가하는 것입니다.

+0

이것은 잘못되었습니다. SQLite는 정확하게 동일한 페이지 캐시 크기 (2000 페이지)를 사용합니다. –

관련 문제