Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 使用EF Code First和MS SQL Express Edition时性能低下_Sql Server_Performance_Entity Framework_Optimization_Large Data - Fatal编程技术网

Sql server 使用EF Code First和MS SQL Express Edition时性能低下

Sql server 使用EF Code First和MS SQL Express Edition时性能低下,sql-server,performance,entity-framework,optimization,large-data,Sql Server,Performance,Entity Framework,Optimization,Large Data,EF Code First和SQL Express存在巨大的性能问题。即使我使用clustured和nonclustured索引,我的get方法也工作得很慢。我如何优化我的数据库,我可以为我的EF代码做些什么?对我的编码方式有什么建议吗 事实上,有些页面有将近100000到1000行数据。我的一些oof页面只调用一个表中的一行,实际上有600000行数据。是的,这是六百行数据。我使用索引,但速度一直在变慢。收缩会损害索引,所以我不想使用它,但任何其他优化技术对我来说都是完美的。对于entityf

EF Code First和SQL Express存在巨大的性能问题。即使我使用clustured和nonclustured索引,我的get方法也工作得很慢。我如何优化我的数据库,我可以为我的EF代码做些什么?对我的编码方式有什么建议吗


事实上,有些页面有将近100000到1000行数据。我的一些oof页面只调用一个表中的一行,实际上有600000行数据。是的,这是六百行数据。我使用索引,但速度一直在变慢。收缩会损害索引,所以我不想使用它,但任何其他优化技术对我来说都是完美的。

对于entityframework,如果您不需要更改跟踪,例如如果您不打算更新任何选定数据,然后更新dbcontext,您可以使用AsNoTracking告诉EF不要跟踪实体,在从数据库检索实体时,EF不会对实体执行所有模糊更改跟踪管理。检查以下文章:


600000行不是一张大桌子。您看到的性能问题可能是由于数据库问题造成的。这是一个巨大的话题,而不是一个很容易在网上论坛解决的话题。您讨论的是一般性能问题,而不是此查询的性能不好,我们如何改进它。不要认为缩小数据库会提高性能。如果你不使用碎片整理索引和统计数据更新,它将产生相反的效果。老实说,600000条记录,甚至60000000条记录,对于通过PK或复合键对一条记录进行聚集索引扫描来说,这并不是过分的。在有能力的机器上进行这样的查询通常会在几毫秒内返回。我会开始考虑其他因素。运行跟踪(如果有),查看命令何时到达sql以及返回所需的时间。在sql admin中运行相同的查询。您的EF命令是什么样子的?您是否在ManagementStudio中运行了相应的SQL?实际上,问题并不是由EF本身引起的。在对项目中使用的代码进行了一些搜索之后,我意识到问题的原因是telerik kendo ui。Read方法从数据库中获取所有数据,并用C对其进行筛选和排序。因为database select query在2或3秒内选择所有数据,而C filter和排序则在30秒内完成。我将尝试转换kendu ui的读取方法。顺便说一句,很抱歉我没有及时回复。我当时太没经验了。我现在知道了为什么代码返回的数据耗费了这么多时间。首先,我们客户的服务器是一个共享服务器。所以我们希望他们增加ram。但真正的问题在于我们的代码。我们的项目没有数据传输层。所有层都有自己的模型,使用foreach循环将数据从一层传输到另一层的模型需要时间。我知道这会让我们的代码变慢,但我想得不多。在发布这个问题两个月后,我在项目中添加了一个数据传输层,并且只在其中放置模型。