Asp.net 从Crystal Report rpt或.Net中的代码中运行存储过程,哪一个更快

Asp.net 从Crystal Report rpt或.Net中的代码中运行存储过程,哪一个更快,asp.net,asp.net-mvc,stored-procedures,crystal-reports,Asp.net,Asp.net Mvc,Stored Procedures,Crystal Reports,我计划创建一个使用Crystal Reports显示报告的系统,我想知道哪个系统运行Crystal Reports.rpt,或者从将记录发送到.rpt的代码更快 为什么你可以假设这个性能?需要您的帮助,谢谢使用存储过程从数据库中提取数据 然后,以编程方式将此数据设置为报告的DataSource 正如您所知,存储过程已经保存在数据库中,因此它将比普通查询更快地提供数据。作为核心程序员,我个人更喜欢使用代码,尤其是在使用ASP.net时。我告诉你为什么: -向导:我讨厌向导,只是经历不同的步骤,更新

我计划创建一个使用Crystal Reports显示报告的系统,我想知道哪个系统运行Crystal Reports
.rpt
,或者从将记录发送到
.rpt
的代码更快


为什么你可以假设这个性能?需要您的帮助,谢谢使用存储过程从数据库中提取数据

然后,以编程方式将此数据设置为报告的
DataSource


正如您所知,存储过程已经保存在数据库中,因此它将比普通查询更快地提供数据。

作为核心程序员,我个人更喜欢使用代码,尤其是在使用ASP.net时。我告诉你为什么:

-向导:我讨厌向导,只是经历不同的步骤,更新存储过程的痛苦等等

-灵活性:代码永远是王者,我的意思是只需比较命令行和GUI。您永远不会受到代码的限制

-bug:我看到过当sp返回临时表或结果是动态的时,从rpt调用存储过程无法工作的bug。只有在使用代码时才能使用它

现在要回答您关于性能的问题,通过代码,它肯定会更快

示例

将结果绑定到reportviewer(很抱歉,我使用了reportviewer,但你明白了

DataTable dt = GetSPResult();
ReportViewer1.Visible = true;
ReportViewer1.LocalReport.ReportPath = "Report1.rdlc";
ReportViewer1.LocalReport.DataSources.Clear();
ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", dt));

我的意思是crystal report。rpt还可以从存储过程使用数据源选项,我只需发送参数输入,在代码中调用该rpt路径,它就会自动生成数据。我将与调用存储过程的代码进行比较,然后将记录发送到crystal report数据源。在这两种情况下,性能都是相同的。但如果调用store Procedure PROGRAMATICALY这样对您来说会更方便。
正如您所知,存储过程已经在数据库中执行,因此它将为您提供比正常查询更快的数据
-嗯?所有查询都在数据库中执行。主要区别在于SP是一个保存的SQL对象,并且很可能会有更好的执行计划数据库引擎。它不是一个预先触发的查询,结果就在旁边(在这个实例中它将如何处理参数)。我同意SP通常比从代码发送的查询快,但不是因为您指定的原因。@Tommy:事实上,我想说的和您所写的一样。但我知道我的解释很糟糕。对此我深表歉意。谢谢。@Bappidata:现在我更喜欢crystal report直接执行SP,它的实现效率会更高,一个仍然很容易跟踪。谢谢