zoukankan      html  css  js  c++  java
  • 三种SQL分页方法性能分析

    --下面是三种分页方法性能测试。
    --与网上所说的测试结果不一致
    --(网上有人认为颠倒顺序top法 性能要比Row_number函数编号分页法要快10倍。。。)
    --测试的表只有3000多行数据这可能是个问题

    set statistics profile on
    set statistics io on
    set statistics time on
    go

    --第一名
    --Row_number函数编号分页法(SQLServer新提供的函数)
    --按SQLServer每一步的执行过程来看:
    --用Row_number分页的执行过程步骤要比用top分页的执行步骤要多
    --但用Row_number分页第三步(前两步是一样的是结果集的查询)
    ----也就是分页开始后的开销基本上等于0。
    ----可能是row_Number函数在查询的结果集上建了一个索引。
    --而用top如果排序不是按索引来排的话每次排序都会花费不少时间
    select * from (
    select
    --top 3020 --加不加top执行过程是一样的。。。
    ROW_NUMBER()over(order by ProductCode DESC ) as rowNum,*
    from Clothes where Sex='男')
    results
    --where rowNum between 3001 and 3020
    --改成下面的写法要快一些。上面的写法在实际执行的时候是与下面写法执行是一样的。
    where rowNum >= 3001 and rowNum <= 3020


    --第二名
    --用颠倒顺序top法
    select * from (
    select top 20 * from (
    select top 3020 *
    from Clothes where Sex='男'
    order by ProductCode DESC
    ) pageResult order by ProductCode ASC )
    pageSort order by ProductCode DESC



    --第三名
    --用top加outer join 法执行12步
    select toPage.* from
    (
    select top 3020 *
    from Clothes where Sex='男'
    order by ProductCode DESC
    )
    toPage
    left outer join
    (
    select top 3000 * from Clothes where Sex='男'
    order by ProductCode DESC
    ) before
    on toPage.clothescode=before.clothescode
    where before.clothescode is null


    go
    set statistics profile off
    set statistics io off
    set statistics time off

  • 相关阅读:
    Git命令家底儿及Git数据通信原理详解
    git SSH keys
    TRIM函数
    c# List AddRange
    vtk第一个程序
    MFC CStatic类动态创建
    前端基础之BOM和DOM
    JavaScript
    前端CSS属性相关
    前端CSS
  • 原文地址:https://www.cnblogs.com/heys/p/1417561.html
Copyright © 2011-2022 走看看