2012-05-17 3 views
2

배경 :
SQLite3 데이터베이스가 있는데 데이터를 쿼리 할 때 CSharp SQLite을 사용하고 있습니다. 내 문제는 JOIN 또는 ORDER BY 호출을 가진 모든 쿼리가 매우 느리다는 것입니다 (대 0.03 초, orig. SQLite 사용).어떻게하면 CSharp SQLite를 사용하여 SQL 쿼리 속도를 높일 수 있습니까?

CSharp SQLite의 최신 benchmarks은 최대 2 배 느리고, 괜찮 으면 좋겠지 만 30 배 느려집니다.

이제 데이터베이스의 모든 필수 필드를 인덱싱하고 적절한 기본 키와 외래 키를 갖습니다. 또한 원래 SQLite는 이러한 쿼리를 잘 실행합니다.

질문 : 그래서 내가 여기에 누락 무언가 또는 내가 CSharp SQLite로 만들 필요가 전화가, SQLite는의 관리 코드 포트를 사용하도록해야
? 어딘가에 대체 SQLite 라이브러리 포트가 있습니까?

+1

전체 포트가 필요하거나 C#에서 SQLite를 쉽게 사용할 수 있어야합니까? [System.Data.Sqlite] (http://sqlite.phxsoftware.com/)는 표준 SQLite를 둘러싼 ADO.NET 래퍼입니다. –

+0

전체 포트. System.Data.SQLite는 C++ 코드를 감싸는 래퍼로서 여전히 C++ 런타임이 필요합니다. 우리는 그 런트미를 사용하는 어떤 것도 사용할 수 없습니다. –

+0

Gotcha. 벤치 마크 코드를 살펴 보니 매우 기본적인 쿼리 만 다루는 것으로 보입니다. 테스트 쿼리에는 JOIN 또는 ORDER BY 절이 없습니다. 아마도 C# -SQLite는 실제로 그 부서에서 느립니다? –

답변

5

정확하게 묻는 질문은 Csharp-sqlite forums이고 성공적인 솔루션은 컴파일 할 때 SQLITE_ENABLE_OVERSIZE_CELL_CHECK 플래그를 제거하는 것이 었습니다. 이는 불필요하지만 집중적 인 계산을 초래하는 DEBUG 플래그입니다.

관련 문제