Asp.net mvc 在asp.net mvc应用程序中检索大量行(超过10 mil)
我正在开发asp.net mvc应用程序,它提供了使用DATAREADER从ORACLE数据库中读取数据的功能,并将这些行呈现给用户(有时高达10 mil)。datareader读取操作在读取大约900000行后抛出内存不足异常 我和我的同事讨论了这个问题,他建议我应该使用无连接范式(可能是实体框架)或存储过程,并将数据分成块Asp.net mvc 在asp.net mvc应用程序中检索大量行(超过10 mil),asp.net-mvc,oracle,datareader,Asp.net Mvc,Oracle,Datareader,我正在开发asp.net mvc应用程序,它提供了使用DATAREADER从ORACLE数据库中读取数据的功能,并将这些行呈现给用户(有时高达10 mil)。datareader读取操作在读取大约900000行后抛出内存不足异常 我和我的同事讨论了这个问题,他建议我应该使用无连接范式(可能是实体框架)或存储过程,并将数据分成块 我想知道是否有人可以权威性地说,哪种方式是完成上述问题的最佳方式。不要将所有行检索到内存中并执行分页 •并非所有用户都访问第2页 •因此,内存中的数据将不被使用 如果有更
我想知道是否有人可以权威性地说,哪种方式是完成上述问题的最佳方式。不要将所有行检索到内存中并执行分页 •并非所有用户都访问第2页 •因此,内存中的数据将不被使用 如果有更多记录使用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");
var result=db.Page您计划如何向用户展示数据?一次可以在页面上看到所有1000万条记录吗?对记录进行分页,以便一次只能看到几百条记录?AJAX在滚动时动态获取更多记录?一个词:不要-除非必须进行统计分析或其他什么,否则不要检索数百万行。你打算怎么处理这个问题?您的用户将如何与如此庞大的数据集进行交互?不可能找到好的解决办法。只获取尽可能多的数据,你可以使用/显示给用户,等等-获取1005001000行-不要更多。“mbeckish”/marc_s我已经在分页了,但在分页之前我正在检索所有数据(当然这种方法不适用于10 mil记录)-我喜欢mbeckish建议的方法,即使用AJAX在用户滚动时动态获取更多记录。我不太确定我将如何实现这一点-是否有一个链接,你可以建议?THanks@user430017研究术语“无限滚动”。asp.net mvc有很多选择。谢谢Eric King。我会做研究并回复你。谢谢@CreativeManix-我将尝试一下POCO。它读起来很有趣。我会再打给你的。对不起,我可能把事情简单化了,不明白你的意思。你有没有试过在甲骨文中正确地分页。我遇到了这个问题,我想知道我是否可以使用上面的方法来分页,而不是通过petaPeco。原因是1。我不太懂ORM2。这会更简单。你怎么认为?谢谢,我遇到了这个-