【发布时间】:2011-07-31 11:18:42
【问题描述】:
我想制作一个 rdlc 报告,该报告使用基于 inputdate 标准的连接从 3-4 个表中获取结果。我想知道哪个更好作为后端、视图或存储过程,以更快地获得结果并获得性能增益,因为我期望结果为 10000-30000 条记录。我的数据库是 SQL Server 2008。请帮忙!
谢谢
【问题讨论】:
标签: sql-server-2008
我想制作一个 rdlc 报告,该报告使用基于 inputdate 标准的连接从 3-4 个表中获取结果。我想知道哪个更好作为后端、视图或存储过程,以更快地获得结果并获得性能增益,因为我期望结果为 10000-30000 条记录。我的数据库是 SQL Server 2008。请帮忙!
谢谢
【问题讨论】:
标签: sql-server-2008
如果没有更多细节,则差别很小或没有差别。
如果查询可以表示为一个简单的视图,那么你应该这样做。
更可能影响查询速度的是您拥有的索引。
【讨论】:
我不确定为什么人们认为他们的选择是视图或存储过程。
视图有多种用途。如果您对不同的报告使用相同的基本查询,或者想要简化架构、实现某种类型的安全性等,那么视图可能是有意义的。 不视图是出于性能原因而实现的(让我们暂时不考虑索引视图)。标准视图永远不会加快查询速度,它只是让引用视图更方便,而不是重复构成视图的所有连接等。
您的报表应该调用一个存储过程 - 这将查询代码模块化,并提供一个修改代码的中心位置。该存储过程是否引用视图是另一个问题。
【讨论】:
视图在查询上增加了一层抽象,并且没有预先优化。因此,如果您只运行底层查询,您将获得比使用视图更好的性能。
【讨论】: