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

我有一些代码可以从.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倍的原因。


慕娘9325324
浏览 614回答 1
1回答

HUX布斯

同步读取文件时,在.net核心上使用dapper时,SQLite似乎不太快。如果您使用异步读取文件,那么它似乎要快得多。HtmlItem&nbsp;=&nbsp;await&nbsp;connection.QueryFirstOrDefault<HtmlItem>(query);
打开App,查看更多内容
随时随地看视频慕课网APP