zoukankan      html  css  js  c++  java
  • 对四种分页方案进行测试

    --直接调用下面的语句直接使用

    --插入测试数据200w条,可能会很久
    create table Student(
      Id int PRIMARY KEY identity(1,1),
      Name nvarchar(50),
      Age int
    )
        go
    declare @i int
    set @i=1
    while @i<=2000000
    begin
    insert into  Student(Name,Age)values('Name',18)
    set @i=@i+1
    end

    go
    --开始测试查询
    declare @now datetime
    --max方案 30
    select 'max'方案
    select @now=getdate()
    --begin
    select top 10 * from Student
    where Id>(
      select max(Id)
      from (
        select top 1999990 Id from Student order by Id)tt)
    --end
    declare @maxDiff int
    select @maxDiff=datediff(ms,@now,getdate())

    --top方案 76
    select 'top'方案
    select @now=getdate()
    --begin
    select top 10 * from Student
    where Id not in(select top  1999990 Id from Student)
    --end
    declare @topDiff int
    select @topDiff=datediff(ms,@now,getdate())

    --row方案 33
    select 'row'方案  
    select @now=getdate()
    --begin
    select *
    from (
    select row_number()over(order by tc)rn,*
    from (select top 2000000 0 tc,* from Student)t
    )tt
    where rn>1999990
    --end
    declare @rowDiff int
    select @rowDiff=datediff(ms,@now,getdate())

    --row_number方案 13
    select 'row_number'方案
    select @now=getdate()
    --begin
    select *
    from(
    select top 200000 row_number()over(order by Id)rn,* from Student
    )t
    where rn>1999990
    --end
    declare @row_numberDiff int
    select @row_numberDiff=datediff(ms,@now,getdate())

    --记录结果
    select '第2万页'页码,@maxDiff max方案,@topDiff top方案,@rowDiff row方案,@row_numberDiff row_number方案

    --分析结果:只测试了两万

    页码      max方案    top方案    row方案    row_number方案    -20 0000数据
    第2万页    30       76        33        13

    页码    max方案    top方案    row方案      row_number方案       -20 0000数据
    第2万页    30      80      13          33

    页码        max方案    top方案    row方案    row_number方案  -120 0000数据
    第119999页    170        186     156     130

    页码        max方案    top方案    row方案    row_number方案  -120 0000数据
    第119999页    173      203       140      143

    页码        max方案    top方案    row方案    row_number方案  -200 0000数据
    第20 0000页    296      326      233      250

    页码        max方案    top方案    row方案    row_number方案  -200 0000数据
    第20 0000页    250      343      233      246

    --加上排序测试

    页码        max方案    top方案    row方案    row_number方案
    第20 0000页    296      343      573      533

    页码        max方案    top方案    row方案    row_number方案
    第20 0000页    280      330      583      546

    页码        max方案    top方案    row方案    row_number方案
    第20 0000页    263      326      586      560

  • 相关阅读:
    海量数据中,寻找最小的k个数。
    快速排序
    反转一个单链表,分别以迭代和递归的形式来实现
    N个大小不等的自然数排序,时间复杂度为O(n),空间复杂度为O(1)
    堆排序
    两个已经排好序的链表合并为一个有序链表
    字符串过滤空格、回车、tab
    求一个浮点数的连续子序列最大乘积 (2013 小米校园招聘笔试题)
    单向循环链表队列,从头开始报数,当报到m或者m的倍数的元素出列
    给一个数组,元素都是整数(有正数也有负数),寻找连续的元素相加之和为最大的序列。
  • 原文地址:https://www.cnblogs.com/Unrmk-LingXing/p/4058700.html
Copyright © 2011-2022 走看看