从很长的动态续集存储过程生成该查询的过滤时运行极慢 - 则过程返回以Telerik的radgrid控件要显示的开始的给定索引处记录的请求号码,有效处理分页。在存储过程的输出的简化版本:SQL存储过程由高行号
SELECT r.* FROM (
SELECT ROW_NUMBER() OVER(ORDER BY InventoryId DESC) as row,
v.* FROM vInventorySearch v
) as R WHERE [ROW] BETWEEN 1 AND 10
当“之间”子句是1和10之间,它在第二个的一部分运行,但如果它是像万和1010之间需要几乎完整分钟执行。
我觉得我可能失去了一些东西根本,但在我看来,这不应该的问题这10条记录,我检索,应采取相同的时间量。
感谢您的任何输入,我期待着成为尴尬!
解决方案,礼貌马丁·史密斯(如下图):
SELECT r.*, inv.* FROM
(
SELECT ROW_NUMBER() OVER(ORDER BY InventoryId DESC) as row, v.InventoryID
FROM vInventorySearch v
WHERE 1=1
) as R
inner join vInventory inv on r.InventoryID = inv.InventoryID
WHERE [ROW] BETWEEN 10001 AND 10010
感谢您的帮助!
您可以发布您的表定义包括索引和执行计划? –