为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
慕娘9325324 2021-04-05 17:14:54
我有一些代码可以从.NET Core 2.0中的本地SQLite数据库文件中提取HTML页面。在调试模式下运行时,此代码可以正常工作,但是在发布应用程序后,该代码在生产中的运行速度非常慢。我使用秒表来诊断是哪段代码导致了该问题,connection.QueryFirstOrDefault并发现在调试模式下需要2毫秒才能找到单行,但是同一任务在发布该应用程序后需要1.4秒。大约慢了700倍。//initialize connectionvar connection = new SqliteConnection("Data Source=" + dbName);// Build SQL Stringstring query = @"SELECT *               FROM HtmlItems               WHERE PostID = 1;// Start Timervar watch = System.Diagnostics.Stopwatch.StartNew();Submit queryHtmlItem = connection.QueryFirstOrDefault<HtmlItem>(query);// End Timerwatch.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倍的原因。
查看完整描述

1 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

同步读取文件时,在.net核心上使用dapper时,SQLite似乎不太快。

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

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


查看完整回答
反对 回复 2021-04-10
  • 1 回答
  • 0 关注
  • 510 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信