我有一个简单的表,只有6个非常简单的字段,表中只有2行。运行查询时
SELECT * FROM PersonsPreferences
在MS SQL Server Management Studio中,“客户端统计信息”报告的运行时间约为0-1毫秒。不出所料。
然而,当我使用Ormlite时,我得到的运行时间要长得多--大约30毫秒。我的C# Ormlite代码如下:
Stopwatch lSW = new Stopwatch();
lSW.Start();
PersonPreference lPMPExisting = db.Select<PersonPreference>().FirstOrDefault();
var e = lSW.ElapsedMilliseconds;
现在,在上面的代码中,"e“得到了大约30的值,这远远超过了它应该得到的值。'PersonPreference‘是一个非常简单的类,用于访问相应的DB表。我使用的是Ormlite 5.0,最新的版本是5.5,但我的数据库访问是如此基础,以至于5.0应该足够好了?有什么建议吗?
Best,Bjorn
发布于 2019-04-17 06:57:29
有几件事。首先是秒表:
Stop()
Stopwatch.IsHighResolution
以确保您的测试是准确的<代码>F29
对于ORM本身,Management Studio通常连接到服务器实例并保留一个会话。因此,客户端统计信息不包含到服务器的连接、身份验证和握手。如果在初始化秒表之前打开与数据库的连接,则会隐藏您发布的代码。在您的示例中,您“选择”/检索多个PersonPreference
,然后在集合上应用LINQ FirstOrDefault,这会对您的性能产生负面影响。当你说执行时间
远远超出了它应有的范围。
您期望的范围是多少,您是否将查询与EF、dapper、Nhibernate或其他任何查询进行了比较?
任何ORM,无论是重的还是微的,都会处理多个职责,并且性能会比使用dbms的直接sql查询差。
https://stackoverflow.com/questions/55716078
复制相似问题