优化存储过程的分页输出效率

时间:2011-09-08 23:50:43

标签: sql-server stored-procedures

我正在研究新的软件客户端的WCF数据服务,我们所有的数据访问逻辑当前都封装在存储过程中。新软件客户端需要能够以分页方式显示非常大的数据集,原因有两个:

  1. 提高线上性能
  2. 减少SQL Server负载,因为它只需要构建页面大小的结果。
  3. OData skip / take语法可以,但在服务器上,查询最终将是executed against a stored procedure(绕过这些复杂的存储过程是不可行的,直接进入表格)。

    我担心的是存储过程将在没有结果集限制的情况下执行(没有ORDER BY / TOP甚至任何'WHERE'子句),然后后续查询将使用任何SQL skip / take机制过滤数据。可用。存储过程所做的大量工作将被浪费,因为它将超出所需的页面大小。

    我的问题是:在SQL Server中,当查询存储过程(而不是直接表)时,重新排序和限制完整结果是否同样有效,因为它是将限制条件传递到存储过程中?

    我希望存储过程的组成指令以某种延迟的方式执行(la Linq),这样当进一步'WHERE','TOP'和'ORDER BY'子句被添加时,产生的工作在数据库上完成的操作得到有效调整。

    谢谢!

0 个答案:

没有答案
相关问题