在 .NET CORE 中使用 Dapper 的 SQLite 查询速度极慢

Extremely slow SQLite query speed using Dapper in .NET CORE

我有一些代码可以从 .NET Core 2.0 中的本地 SQLite 数据库文件中提取 HTML 页面。

此代码在调试模式下运行良好,但在我发布应用程序后在生产环境中运行速度极慢。

我使用秒表来诊断是哪段代码导致了问题,发现 connection.QueryFirstOrDefault 在调试模式下需要 2 毫秒才能找到一行,但是在我发布后同样的任务需要 1.4 秒应用程序。这大约慢了 700 倍。

//initialize connection
var connection = new SqliteConnection("Data Source=" + dbName);

// Build SQL String
string query = @"SELECT *
               FROM HtmlItems
               WHERE PostID = 1;

// Start Timer
var watch = System.Diagnostics.Stopwatch.StartNew();

Submit query
HtmlItem = connection.QueryFirstOrDefault<HtmlItem>(query);

// End Timer
watch.Stop();
var result = watch.ElapsedMilliseconds();

查询映射到如下所示的对象

public class HtmlItem
{
    public int PostID { get; set; }
    public string PostTitle { get; set; }
    public string PostDescription { get; set; }
    public int PostDate { get; set; } // Unix Timestamp
    public int Hidden { get; set; }
    public string Url { get; set; }
    public string PostHTML { get; set; }
}

调试和生产使用同一个数据库文件,这个数据库文件只有三行。我的应用程序应该是唯一尝试访问该文件的应用程序。

索引 SQLite 数据库文件似乎没有任何速度提升。

我想知道如何确定导致我与数据库的连接在生产中慢 700 倍的原因。

在同步读取文件时,SQLite 在 .net core 上使用 dapper 似乎不是很快。

如果您使用异步读取文件,那么它似乎要快得多。

HtmlItem = await connection.QueryFirstOrDefault<HtmlItem>(query);