我正在研究新的软件客户端的WCF数据服务,我们所有的数据访问逻辑当前都封装在存储过程中。新软件客户端需要能够以分页方式显示非常大的数据集,原因有两个:
OData skip / take语法可以,但在服务器上,查询最终将是executed against a stored procedure(绕过这些复杂的存储过程是不可行的,直接进入表格)。
我担心的是存储过程将在没有结果集限制的情况下执行(没有ORDER BY / TOP甚至任何'WHERE'子句),然后后续查询将使用任何SQL skip / take机制过滤数据。可用。存储过程所做的大量工作将被浪费,因为它将超出所需的页面大小。
我的问题是:在SQL Server中,当查询存储过程(而不是直接表)时,重新排序和限制完整结果是否同样有效,因为它是将限制条件传递到存储过程中?
我希望存储过程的组成指令以某种延迟的方式执行(la Linq),这样当进一步'WHERE','TOP'和'ORDER BY'子句被添加时,产生的工作在数据库上完成的操作得到有效调整。
谢谢!