1

我正在开发 asp.net mvc 应用程序,它提供了使用 DATAREADER 从ORACLE数据库读取数据并将这些行呈现给用户的功能(有时高达 10 百万)。datareader 读取操作在读取大约 900,000 行后抛出内存不足异常。

我正在和我的同事讨论这个问题,他建议我应该使用无连接范式(可能是实体框架)或存储过程并以块的形式引入数据。

我想知道是否有人可以权威地说哪个是完成上述问题的最佳方法。

4

1 回答 1

0

不要将所有行检索到内存并执行分页

•并非所有用户都访问第二页

•因此您在内存中的数据将不会被使用

如果您有更多记录使用 SQL 端分页,您可以使用 Row_number() 函数在 SQL 端执行分页。

您还可以使用 ORM 框架来访问数据,它们始终提供执行数据相关操作的最佳方法。

我更喜欢使用 Peta Poco,它有一种检索页面数据的方法。

var result=db.Page<article>(1, 20, // <-- page number and items per page
"SELECT * FROM articles WHERE category=@0 ORDER BY date_posted DESC", "coolstuff");

http://www.toptensoftware.com/petapoco/

于 2013-08-13T18:01:15.377 回答