使用ListView创建临时表或不具有性能

时间:2015-06-06 23:07:15

标签: asp.net oracle listview

我对.NET及其包含的控件相对较新。我意识到这个问题确实是开放的意见,但是会感谢那些必须支持.NET页面的人的输入,其中数据库记录集在数百万条记录中。

我有一个Oracle表,它将在未来几年增长到几十万行,可能超过500万到1000万。我们目前正在取代的系统是600万条记录。不是很大,但足以影响页面性能。我们希望能够通过具有典型下一页/上一页导航的ASPX页面显示数据。用户可以搜索/过滤数据以限制其记录集,但仍可能有两到三页(100-300条记录)的结果。

据我所知,.NET中的ListView对象检索数据源的SELECT语句中的所有记录,然后过滤/分页控件在.NET服务器而不是数据库处理结果(直到你发出一个新的数据绑定())。这似乎是较大记录集中的潜在性能问题,我们已经看到只有几千条记录,其中过滤器控件似乎不会过滤,直到整个基础表记录返回到.NET。如果这是一个不正确的假设或理解,请纠正我。

鉴于我们系统的潜在增长,我们会关注未来的表现。我们考虑过最好使用SELECT ... FROM ... where rownum>1 and rownum<=50来处理数据绑定中的数据分页,从而迫使分页在数据库端发生并在每次页面更改时执行,这样我们就可以了。在.NET端一次只能处理几百条记录。这是关于性能的错误假设吗? .NET在大型记录集上执行分页是否存在性能问题?

我的最后一个问题是,如果我们更好地在数据库而不是.NET中进行分页,我们最好将我们的初始搜索结果存储在会话特定的临时表中,然后使用它作为基础我们的分页数据,而不是在我们浏览记录时反复对主表运行上述查询?

提前感谢大家的意见。

0 个答案:

没有答案