Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.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 实体框架6可以';无法处理大数据_Sql Server_Asp.net Mvc_Entity Framework_Linq To Sql_Large Data - Fatal编程技术网

Sql server 实体框架6可以';无法处理大数据

Sql server 实体框架6可以';无法处理大数据,sql-server,asp.net-mvc,entity-framework,linq-to-sql,large-data,Sql Server,Asp.net Mvc,Entity Framework,Linq To Sql,Large Data,我在使用EntityFramework6处理大数据时遇到了问题。当我试图从数据库中获取数据时,它会给出超时错误。我只是在我的查询中添加了两个额外的表。我的意思是我加入了3张桌子,其中一张现在是空的。(订单、订单详情、人员) ORDERS表有385K条记录,PEOPLE有400K条记录。我也没有得到所有的记录。我一页只拿了25张唱片。(我正在使用分页。) 这是我的示例代码。15秒后,它给出超时错误,当我从Sql Profiler获取tsql查询时,它可以工作,但这需要37秒 // skipCoun

我在使用EntityFramework6处理大数据时遇到了问题。当我试图从数据库中获取数据时,它会给出超时错误。我只是在我的查询中添加了两个额外的表。我的意思是我加入了3张桌子,其中一张现在是空的。(订单、订单详情、人员)

ORDERS表有385K条记录,PEOPLE有400K条记录。我也没有得到所有的记录。我一页只拿了25张唱片。(我正在使用分页。)

这是我的示例代码。15秒后,它给出超时错误,当我从Sql Profiler获取tsql查询时,它可以工作,但这需要37秒

// skipCount is integer and it changes with page number.
// pageSize is fixed integer number which is 25.
// I also set timeout about 180 seconds
var list = _uow.Repository<ORDERS>()
        .Query(x => x.ACTIVE == true)
        .Include(x => x.ORDER_DETAILS)
        .Include(x => x.PEOPLE)
        .OrderBy(sorting)
        .Skip(skipCount)
        .Take(pageSize)
        .ToList();

如何解决此性能问题?或者我的错误在哪里?

我使用这段sql代码来重建所有索引,现在我的问题已经解决了。 谢谢你的帮助

USE [DATABASE_NAME]
EXEC [sp_MSforeachtable] @command1="RAISERROR('DBCC DBREINDEX(''?'') ...',10,1) WITH NOWAIT DBCC DBREINDEX('?')"

您的表中有索引吗?如果您这样做,您可以检查它们的运行状况(在SQL Management Studio中右键单击数据库,选择Reports->Standard Reports->Index Physical Statistics)。也许它们变得支离破碎,需要重新组织甚至重建。如果你没有索引,那么你知道下一步该怎么做。谢谢你提醒我,是的,我有索引,我会再次重建它们,但即使我没有索引,没有25条记录也不奇怪。我可以再问一件事吗,为什么linqtosql一个工作得很好,而另一个工作得不好。如果不看你的代码(linqtosql和EF),我无法回答你的问题。同时,只拿25张唱片并不意味着你会很快把它们拿出来。您需要首先找到它们,如果没有适当的索引,这可能会变成一个非常缓慢的操作(您可能已经发现)。2个问题:什么是
\u uow.Repository()
,sql看起来像什么?计算[Limit1]视图需要多长时间?查询计划对缺少索引有何说明?
USE [DATABASE_NAME]
EXEC [sp_MSforeachtable] @command1="RAISERROR('DBCC DBREINDEX(''?'') ...',10,1) WITH NOWAIT DBCC DBREINDEX('?')"