zoukankan      html  css  js  c++  java
  • 数据库分页

    1. ROW_NUMBER() 的分页方法

    DECLARE @currentPage INT =2,@pageSize INT =5;
    WITH cte AS(
    SELECT ROW_NUMBER() OVER(ORDER BY OrderId desc) rowid,* FROM dbo.EC_Orders)
    SELECT * FROM cte WHERE rowid > (@currentPage-1)*@pageSize AND rowid<= @currentPage*@pageSize

    2. Offset and Fetch 的分页方法

    DECLARE @currentPage INT =2,@pageSize INT =5;
    SELECT * FROM dbo.EC_Orders ORDER BY OrderId DESC OFFSET (@currentPage-1)*@pageSize ROW FETCH NEXT @pageSize ROWS ONLY

    综合性能比较:

    在 Sql Server 2012 里面,分页方法中,Offset and Fetch 同 ROW_NUMBER() 比较起来,无论是性能还是语法,都是有优势的。

    但是性能方面,优势并不是太大,两者 的 IO 消耗完全相同,只是 在 CPU 方面,Offset and Fetch 方面要好一些,但是不明显。如果对于一个 每秒都要处理成千上万条的分页Sql语句的DB 来说,Offset and Fetch 在CPU 方面的优势会比较明显的,否则,性能的提升并不明显。
    语法方面 Offset and Fetch 则是十分的简洁,一句搞定,比起 Row_Number() 好了太多 
  • 相关阅读:
    Redis-数据类型
    文件转二进制流拆分与组装
    word 文件转PDF 预览
    查询数据库还原时间
    Window10主机连接到Docker 中的mysql 数据库
    sqlServer 执行存储过程结果存表中
    启动mysql 镜像
    Java类型转换细节
    IDEA常用插件
    IDEA控制台中文乱码
  • 原文地址:https://www.cnblogs.com/kaikaichao/p/5610586.html
Copyright © 2011-2022 走看看