当执行应用程序的第一个查询时,我遇到了实体框架的性能问题需要大约20秒我在sql server上使用sql server profiler检查查询的实际执行时间需要几毫秒。在第一个查询后,其他工作确定。
查询是一个非常简单的选择,从一个只插入一行的表.DB由大约200个表组成,但没有任何花哨的没有索引,视图...我看到其他一些人也有与第一个查询类似的问题但是我找不到解决方案。对于真正发生的事情有任何想法吗?
这个查询
DBEntities en = new DBEntities();
var person= (from p in en.People
select p).First();
this.txt1.Text = person.name;
答案 0 :(得分:1)
尽管SQL查询需要几毫秒,但在EF中创建SQL可能需要一些时间才能首次执行。特别是如果它是一个复杂的查询/模型。看一下这篇文章,它解释了如何预生成以提高性能。 Pre-Generate Views
答案 1 :(得分:0)
如果数据库中的查询只花了几毫秒(小于300),则问题在于应用程序。您需要检测代码并记录消息,告诉您事务发生时的事件。您应该在调用数据库之前和之后进行日志记录,以便排除网络延迟。在第一次查询之后,结果可能会被缓存,因此之后一切都很快。问题是设置缓存或传输有效负载是否一直都在使用。
答案 2 :(得分:0)
另外两个选项可用于查找代码杀死效果的位置:SQL Profiler和优秀的EFProf。