• 三种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

  • 相关阅读:
    npm 报错 : `Error: ENOENT: no such file or directory, mkdir D:\`
    weex中根据返回图片的大小,进行等比缩放展示
    weex中怎么动态循环产生输入框?字段名根据后端返回的数据而定
    hdu 2473 Junk-Mail Filter(并查集)
    cf2A Winner(implementation)
    hdu 5185 Equation(分析+DP)
    hdu 5183 Negative and Positive (NP)(STL-集合【HASH】)
    hdu 2059 龟兔赛跑(DP)
    hdu 1978 How many ways(DP)
    hdu 2577 How to Type(DP)
  • 原文地址:https://www.cnblogs.com/heys/p/1417561.html
Copyright © 2020-2023  润新知