yi

     沉睡的字符正在苏醒,0和1正在展示自然的魄力!

导航

对数据的分页再一次思考

  使用Row_Number()和CTE就非常容易进行数据分面了,在这里不再描述,请查找博客园的相关随笔.

  在这里所说的是返回数据行数,大家可以再查询一次,这无疑是对IO再进行一次消耗,我们应该如何完成这个功能呢。废话我也不说了,给出代码,然后你们再自己测试一下

DECLARE @startRow INT ; SET @startrow = 20;

WITH cols
AS
(
    SELECT name,
        ROW_NUMBER() OVER(ORDER BY name) AS seq,
        ROW_NUMBER() OVER(ORDER BY name desc) AS totalRows
    FROM table

)
SELECT name, totalRows + seq -1 as TotRows
FROM cols
WHERE seq BETWEEN @startRow AND @startRow + 19
ORDER BY seq

  从这个来看,无疑增加了CPU的使用,但对于IO的使用降到了最低,从我的经验来看,IO的问题远大于CPU的问题,特别是对于复杂的查询。

posted on 2010-05-10 20:59  yi  阅读(179)  评论(1编辑  收藏  举报