我在 asp.net/C#/Mysql 中有一个 Web 项目,其中的数据最多可以处理大约 30,000 行数据。它是一个报告工具,我必须在多个级别显示计数和总和等统计数据。
我想知道哪个是解决这个问题的更好方法。
我可以将我的数据过滤到可以查询的有限列中。
现在,Is 是将数据(所有行)加载到我的应用程序的好方法,每当用户查询时,我都可以过滤该数据并在代码中进行计算并显示我的统计信息。
或者我可以让存储过程完成所有计算,并且每次用户查询时我都可以调用存储过程并获取我的统计信息。
谢谢
我在 asp.net/C#/Mysql 中有一个 Web 项目,其中的数据最多可以处理大约 30,000 行数据。它是一个报告工具,我必须在多个级别显示计数和总和等统计数据。
我想知道哪个是解决这个问题的更好方法。
我可以将我的数据过滤到可以查询的有限列中。
现在,Is 是将数据(所有行)加载到我的应用程序的好方法,每当用户查询时,我都可以过滤该数据并在代码中进行计算并显示我的统计信息。
或者我可以让存储过程完成所有计算,并且每次用户查询时我都可以调用存储过程并获取我的统计信息。
谢谢
数据库经过优化以执行这种数据操作。而且由于您也减少了网络负载,因此我会投票支持第二个选项。
另一种可能性是考虑某种 OLAP 解决方案,其中事务数据已经合并为更小的数据块,这些数据块又可以轻松查询。
我肯定会选择第二种选择。您正在谈论一个 Web 应用程序,如果您想在加载时获取所有数据,那么您必须将其存储在某个地方以在回发期间保留它。如果您选择将其存储在会话状态中,您最终将消耗 Web 服务器内存,因为您有多个用户访问您的站点。
如果你把它存储在视图状态,那么你最终会得到一个非常大的客户端响应,这会使你的页面在客户端加载非常慢,并且会导致网络流量。
选项 2 是最好的,因为存储过程是预编译的,这意味着它们在性能方面要好得多。您还将减少网络流量。