zoukankan      html  css  js  c++  java
  • SQL Server2005 分頁

    第一種方法
    SELECT *
    FROM (
    SELECT ROW_NUMBER() OVER (ORDER BY [reqno]) AS [rownum], *
    FROM [dbo].[csreqshortno]
    ) a
    where a.rownum between 110010 and 110030
     
    大概需要0~5秒
    第二種方法
    DECLARE @PageLowerBound int
                     DECLARE @PageUpperBound int
                   
                     -- Set the page bounds
                    SET @PageLowerBound = 10
                    SET @PageUpperBound = 30
     
                    -- Create a temp table to store the select results
                    Create Table #PageIndex
                    (
                        [IndexId] int IDENTITY (1, 1) NOT NULL,
                        [Id] varchar(18)
                    )
                  
                    -- Insert into the temp table
                    declare @SQL as nvarchar(4000)
                    SET @SQL = 'INSERT INTO #PageIndex (Id)'
                    SET @SQL = @SQL + ' SELECT'
                    SET @SQL = @SQL + ' TOP ' + convert(nvarchar, @PageUpperBound)
                    SET @SQL = @SQL + ' [reqno]'
                    SET @SQL = @SQL + ' FROM dbo.csreqshortno'
                    SET @SQL = @SQL + ' ORDER BY reqno'
                   
                    -- Populate the temp table
                    exec sp_executesql @SQL
                    -- Return paged results
                    SELECT O.*
                    FROM
                        dbo.csreqshortno O,
                        #PageIndex PageIndex
                    WHERE
                        PageIndex.IndexID > @PageLowerBound
                        AND O.reqno = PageIndex.[Id]
                   ORDER BY
                       PageIndex.IndexID
                   
    drop table #PageIndex  
     
    大概需要0~3秒
     
    第二種方法相對比第一種方法效率高一點,不需要在全表插入列[rownum],在行數選擇靠前時訪問效率高。
  • 相关阅读:
    DDD中的聚合和UML中的聚合以及组合的关系
    服务端高并发分布式架构演进之路
    互联网架构的演变,那些神奇的东西怎么来的?
    WPF 之 创建继承自Window 基类的自定义窗口基类
    IIS 之 在IIS7、IIS7.5中应用程序池最优配置方案
    性能测试工具 之 性能计数器
    IIS 之 线程池最大线程数
    WebService 之 已超过传入消息(65536)的最大消息大小配额。若要增加配额,请使用相应绑定元素上的 MaxReceivedMessageSize 属性。
    IIS 之 Web 服务器上的 ASP.NET 进程模型设置
    ADO.Net 之 数据库连接池(二)
  • 原文地址:https://www.cnblogs.com/tianxiang2046/p/1368776.html
Copyright © 2011-2022 走看看