【发布时间】:2014-04-21 17:15:08
【问题描述】:
我正在尝试使用 sql 中的 ROW_NUMBER() 在 asp.net 中为 gridview 实现自定义分页。下面的(经典)查询效果很好,但是它的性能不是很好,因为我必须将整个表复制到一个新表中,然后从新表中选择 20 条记录。它有时甚至在不分页的情况下效果更好,只需一次检索所有记录。我尝试在 where 子句中使用 ROW_NUMBER() 但 sql 不允许我这样做。如何改进下面的查询?你有什么建议?我想我需要找到一种方法来消除将整个数据集复制到新表的过程,但是如何?
SELECT PostId, Message, (ROW_NUMBER() OVER (ORDER BY LastUpdateDateTime DESC)) as Row
INTO #Results
FROM Posts
WHERE Posts.TimePointId=@TimePointId AND IsFixed=0
ORDER BY LastUpdateDateTime DESC
-----------------------------------------------------
SELECT * FROM #Results
WHERE Row BETWEEN(@PageIndex -1) * @PageSize + 1 AND(((@PageIndex -1) * @PageSize + 1) + @PageSize) - 1
DROP TABLE #Results
【问题讨论】:
标签: c# asp.net sql sql-server gridview