zoukankan      html  css  js  c++  java
  • sqlserver两种分页方法比较

    -- 3000 page(从1开始) 10 pagesize --

    方法1(效率不高):

    SELECT TOP 10 * FROM [xxx].[oooo]
    WHERE
    id NOT IN
    (SELECT TOP (10*(3000-1)) id FROM [xxx].[oooo] ORDER BY createtime DESC)
    ORDER BY createtime DESC;

    方法2(效率高):

    SELECT TOP 10 *
    FROM
    (SELECT ROW_NUMBER() OVER (ORDER BY createtime DESC) AS RowNumber,* FROM [xxx].[oooo]) as A
    WHERE RowNumber > 10*(3000-1) ORDER BY createtime DESC;

    方法1没什么好讲的,方法2是利用ROW_NUMBER()函数给表oooo的数据按照createtime字段ORDER BY的顺序给每条数据加上一个序号,然后把这个RowNumber和其它列组成一个新表,再根据这个RowNumber进行分页。

    ps:ROW_NUMBER()函数在sqlserver 2005之后才有

    效果的话,我的表有6W多数据,每页10条数据查询第3000页,方法1平均需要6 7s,方法2平均只需要0.1 2s。

  • 相关阅读:
    实现CA和证书申请
    1.ssh端口
    1.对称加密6和7的操作
    关于网页访问并发量,统计前十,防火墙
    双指针法
    并查集
    c++常用函数
    vector常用方法
    贪心算法
    字符串类问题
  • 原文地址:https://www.cnblogs.com/shamo89/p/7641143.html
Copyright © 2011-2022 走看看