Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 百万交易-提高网站性能_C#_Asp.net_Database_Performance_Soap - Fatal编程技术网

C# 百万交易-提高网站性能

C# 百万交易-提高网站性能,c#,asp.net,database,performance,soap,C#,Asp.net,Database,Performance,Soap,我有一个页面,它调用一个存储过程来读取300万到400万个数据,进行一些计算并返回一个小数据表。SP速度慢约20至30秒。因此,整个页面加载速度很慢 我会重新考虑SP吗?但问题是,无论我做什么,我的最终结果都是小数据表 有什么建议可以提高绩效吗 如果不经常更新表,则创建一个性能更好的“聚合”表。如果您正在处理300万或400万行数据,并且实际执行工作,那么20秒或30秒的性能相当不错,IMHO。检查存储过程的执行计划。在理想情况下,每个表都会被索引搜索而不是表扫描击中。如果您不确定如何解释sho

我有一个页面,它调用一个存储过程来读取300万到400万个数据,进行一些计算并返回一个小数据表。SP速度慢约20至30秒。因此,整个页面加载速度很慢

我会重新考虑SP吗?但问题是,无论我做什么,我的最终结果都是小数据表


有什么建议可以提高绩效吗

如果不经常更新表,则创建一个性能更好的“聚合”表。

如果您正在处理300万或400万行数据,并且实际执行工作,那么20秒或30秒的性能相当不错,IMHO。检查存储过程的执行计划。在理想情况下,每个表都会被索引搜索而不是表扫描击中。如果您不确定如何解释showplan结果,请咨询DBA。我假设您使用的是SQL Server

检查以确保您的表具有适当的索引,并且统计信息是最新的。如果没有,请更新它们。重新编译存储过程。如果传递给存储过程的参数是异常值,则会阻塞缓存的执行计划。您可以通过如下方式对存储过程进行编码来防止这种情况:

create proc myProc

  @p1 varchar(32) 

as

  declare
    @p1Local varchar(32)

  set @p1Local = @p1

  ...

如果数据更新不太频繁,可以创建索引视图

:

索引视图提供了使用标准索引无法实现的额外性能优势。索引视图可以通过以下方式提高查询性能: 聚合可以预先计算并存储在索引中,以最大限度地减少查询执行期间的昂贵计算。 可以预联接表并存储结果数据集。 可以存储联接或聚合的组合


还有更多细节吗?为什么程序必须读取300万到400万条记录?表结构和正在运行的查询是什么?您甚至没有发布正在使用的数据库引擎。我们应该如何帮助您?读取300-400万行需要时间-这可能是实际读取的行数,还是表中的行数?也许索引会有所帮助?请发布您正在使用的数据库。我一直在使用SQL Server 2008。创建SP脚本是为了聚合5个以上表中的数据。避免使用光标,我需要按所有数据分组,以形成小数据表。它实际上是一个类似于矩阵的数据表。但在加载此页面之前,我可以在后台运行此sp。使用SOAP是个好主意吗?我一直在使用SQL Server 2008。创建SP脚本是为了聚合5个以上表中的数据。避免使用光标,我需要按所有数据分组,以形成小数据表。它实际上是一个类似于矩阵的数据表。但在加载此页面之前,我可以在后台运行此sp。使用SOAP是一个好主意吗?@Shuvra:对于聚合表,@Pasi可能意味着您应该将最终结果表(小表)存储在数据库的某个位置,存储在专门为此设计的单独表中。所以它会非常快。然后,服务器上的后台作业会不时刷新该表中的数据,因此无需在混合中包含SOAP。谢谢Pasi和fretje。这真是个好主意。非常感谢您的帮助。@Shuvra:如果您认为答案对您的特定问题有帮助,您可以接受答案(欢迎使用Stack Overflow btw)。我在表中使用了索引,查询计划似乎还可以。但在加载此页面之前,我可以在后台运行此sp。使用SOAP是个好主意吗?SOAP与存储过程的执行时间有什么关系?对不起,我对WCF/SOAP知之甚少。实际上,我正在开发web应用程序。因此,我认为,这个SP应该调用并加载数据集的页面。如果我在上一页中调用SP,则用户可能会看到实际页面的加载速度比正常页面快,而不是这样做。在登录时间中选择SP参数。这样我就可以毫无保留地提高性能。这是个好主意吗?还有什么建议吗。非常感谢你的帮助。