Asp.net 如何克服这个错误';System.OutOfMemoryException';?

Asp.net 如何克服这个错误';System.OutOfMemoryException';?,asp.net,devexpress,aspxgridview,Asp.net,Devexpress,Aspxgridview,我正在使用devexpress网格视图。我在sql数据库中有2800000条记录。我提出了如下问题: SELECT YEAR(Time) Year ,MONTH(Time) Month ,[StoreID] ,[TransactionNumber] ,[BatchNumber] ,[CustomerID] ,[CashierID] ,[Total] FROM [HQMatajer].[dbo].[Transaction] where YEAR(Time)=20

我正在使用devexpress网格视图。我在sql数据库中有2800000条记录。我提出了如下问题:

SELECT 
   YEAR(Time) Year
  ,MONTH(Time) Month
  ,[StoreID]
  ,[TransactionNumber]
  ,[BatchNumber]
  ,[CustomerID]
  ,[CashierID]
  ,[Total]
FROM [HQMatajer].[dbo].[Transaction]
where YEAR(Time)=2015
执行此查询并花费15秒在sql server中给出结果。但当我尝试使用sqldatasource或动态地在asp.net网格视图中运行时,它给出了
system.OutOfMemoryException

第二个错误

这不会在单个页面中显示所有记录。此结果将以1000页显示


嗯,OutOfMemoryException很难用简单的方法解决。这就是例外的原因

如果你仔细观察你的方法,你会发现你正试图获取280万行并将其放到一个网站上。这意味着您正试图构建一个包含280万行的页面,而不是页面其余部分的开销。如果在一个5行长的代码段中使用280万行,那么最终将得到5x2.8万行。。这太多了,无法展示

最好的办法是重新设计你的网页。您需要在一页中包含280万行吗?我的答案是绝对不!这在机器上太多太多太多的过程,对人类来说太多太多太多的过程,太多了


使用较小的集合

解决方案是不在一个页面上显示280万条记录。添加更多内存,显示更少的记录。我不认为增加更多内存是一个可行的选择^^你是否希望你的用户在一个有280万条记录的网格中滚动?你花了多长时间查看所有数据?用户将如何处理这些数据?要克服这一问题,您必须实现对网格和查询的分页。如果您使用的是SQL Server 2012或更高版本,请检查此内容。@DavidG很抱歉,延迟回复,这不会在一个页面中显示所有记录。它将在第一页显示50条记录。它有分页功能