【问题标题】:ExecuteQuery command in SQLite x86 runs very slowSQLite x86 中的 ExecuteQuery 命令运行速度很慢
【发布时间】: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


【解决方案1】:

执行查询时,x64 版本比 x86 版本使用更大的虚拟空间。因此,x86 平台的执行时间比 x64 大,唯一能减少它的方法是在查询表中添加索引。

【讨论】:

  • 这是错误的; SQLite 使用完全相同的页面缓存大小(2000 页)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-14
  • 2018-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-02
相关资源
最近更新 更多