【发布时间】:2013-09-09 07:23:55
【问题描述】:
我遇到了 SQLite 问题,需要一些帮助。 我正在使用 SQLite 预编译的 dll 在 C# .NET 中开发应用程序。我使用的版本是 x86 的“1.0.66.0”和 x64 处理器的“1.0.79.0”。
我使用以下命令得到一些结果
*using (DbDataReader reader = _database.ExecuteQuery(selectCommand))*
场景如下:
#1 我使用 Platform target:x64 构建 exe 并加载 x64 版本的 SQLite 在这种情况下,ExecuteQuery 执行 selectCommand 并在 1 秒内返回结果(37 行)。
#2 我使用 Platform target:x86 构建 exe 并加载 x86 版本的 SQLite 在这种情况下,ExecuteQuery 执行 selectCommand 并在 55 秒内返回结果(37 行)。
这很奇怪,因为代码完全相同,唯一改变的是 sqlite dll,以便在两种类型的处理器中运行。
任何想法如何解决这个问题?
PS。当我在数据库上运行相同的命令时,手动在 1 秒内返回数据。
【问题讨论】:
-
这三种情况你使用的是什么版本的SQLite? (试试
SELECT sqlite_version()) -
@CL -我的 SQLite 版本是 3.7.6.1
-
@CL - 两种情况,我在两种情况下都使用相同的版本。如果您的意思是 dll 的版本是 x86 的“1.0.66.0”和 x64 的“1.0.79.0”。谢谢
-
根据documentation,您的 DLL 都不使用 3.7.6.1 版本。第三种情况是您用来手动运行命令的任何工具。无论如何,x64 DLL 中较新的 SQLite 版本中更新的查询优化器将解释差异。
标签: sqlite x86 64-bit executequery