【问题标题】:How can I speed up SQL queries using CSharp SQLite?如何使用 CSharp SQLite 加速 SQL 查询?
【发布时间】:2012-09-01 03:04:36
【问题描述】:

背景:
我有一个 SQLite3 数据库,我正在使用 CSharp SQLite 来查询数据。我的问题是任何带有 JOIN 或 ORDER BY 调用的查询都非常慢(使用 CSharp-SQLite 为 0.1 秒,而使用 orig.SQLite 为 0.003 秒)。

CSharp SQLite 的最新 benchmarks 表明它最多慢 2 倍,这很好,但我得到的时间慢了 30 倍。

现在,我已经为我的数据库中的所有必要字段编制了索引,并拥有了适当的主键和外键。另外,原始 SQLite 可以很好地运行这些查询。

问题:
我必须使用 SQLite 的托管代码端口,所以我在这里缺少什么或者我需要拨打CSharp SQLite 的电话吗?是否有替代的 SQLite 库端口?

【问题讨论】:

  • 您需要一个完整的端口,还是只需要能够从 C# 轻松使用 SQLite? System.Data.Sqlite 是标准 SQLite 的 ADO.NET 包装器。
  • 全端口。 System.Data.SQLite 作为 C++ 代码的包装器,仍然需要 C++ 运行时。我们不能使用任何使用这些 runtmes 的东西。
  • 明白了。仅从查看基准代码来看,它似乎只涵盖了非常基本的查询。测试查询中没有任何 JOIN 或 ORDER BY 子句。也许 C#-SQLite 在那个部门真的很慢?

标签: c# performance sqlite


【解决方案1】:

Csharp-sqlite forums 中提出了这个精确的问题,成功的解决方案是在编译时删除 SQLITE_ENABLE_OVERSIZE_CELL_CHECK 标志。这是一个 DEBUG 标志,会导致不必要但密集的计算。

【讨论】:

    猜你喜欢
    • 2014-02-13
    • 2020-08-21
    • 2023-02-11
    • 2015-04-07
    • 2020-03-30
    • 1970-01-01
    • 2023-04-08
    • 2015-08-31
    • 2021-09-07
    相关资源
    最近更新 更多