<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    The important thing in life is to have a great aim , and the determination

    常用鏈接

    統(tǒng)計(jì)

    IT技術(shù)鏈接

    保險(xiǎn)相關(guān)

    友情鏈接

    基金知識

    生活相關(guān)

    最新評論

    在SQL Server中通過SQL語句實(shí)現(xiàn)分頁查詢

    建立表:

    CREATE TABLE [TestTable] (
    [ID] [int] IDENTITY (1, 1) NOT NULL ,
    [FirstName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
    [LastName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
    [Country] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [Note] [nvarchar] (2000) COLLATE Chinese_PRC_CI_AS NULL
    ) ON [PRIMARY]
    GO

    插入數(shù)據(jù):(2萬條,用更多的數(shù)據(jù)測試會明顯一些)
    SET IDENTITY_INSERT TestTable ON

    declare @i int
    set @i=1
    while @i<=20000
    begin
    insert into TestTable([id], FirstName, LastName, Country,Note) values(@i, 'FirstName_XXX','LastName_XXX','Country_XXX','Note_XXX')
    set @i=@i+1
    end

    SET IDENTITY_INSERT TestTable OFF



    -------------------------------------

    分頁方案一:(利用Not In和SELECT TOP分頁)
    語句形式:
    SELECT TOP 10 *
    FROM TestTable
    WHERE (ID NOT IN
    (SELECT TOP 20 id
    FROM TestTable
    ORDER BY id))
    ORDER BY ID


    SELECT TOP 頁大小 *
    FROM TestTable
    WHERE (ID NOT IN
    (SELECT TOP 頁大小*頁數(shù) id
    FROM 表
    ORDER BY id))
    ORDER BY ID

    -------------------------------------

    分頁方案二:(利用ID大于多少和SELECT TOP分頁)
    語句形式:
    SELECT TOP 10 *
    FROM TestTable
    WHERE (ID >
    (SELECT MAX(id)
    FROM (SELECT TOP 20 id
    FROM TestTable
    ORDER BY id) AS T))
    ORDER BY ID


    SELECT TOP 頁大小 *
    FROM TestTable
    WHERE (ID >
    (SELECT MAX(id)
    FROM (SELECT TOP 頁大小*頁數(shù) id
    FROM 表
    ORDER BY id) AS T))
    ORDER BY ID


    -------------------------------------

    分頁方案三:(利用SQL的游標(biāo)存儲過程分頁)
    create procedure XiaoZhengGe
    @sqlstr nvarchar(4000), --查詢字符串
    @currentpage int, --第N頁
    @pagesize int --每頁行數(shù)
    as
    set nocount on
    declare @P1 int, --P1是游標(biāo)的id
    @rowcount int
    exec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output
    select ceiling(1.0*@rowcount/@pagesize) as 總頁數(shù)--,@rowcount as 總行數(shù),@currentpage as 當(dāng)前頁
    set @currentpage=(@currentpage-1)*@pagesize+1
    exec sp_cursorfetch @P1,16,@currentpage,@pagesize
    exec sp_cursorclose @P1
    set nocount off

    其它的方案:如果沒有主鍵,可以用臨時(shí)表,也可以用方案三做,但是效率會低。
    建議優(yōu)化的時(shí)候,加上主鍵和索引,查詢效率會提高。

    通過SQL 查詢分析器,顯示比較:我的結(jié)論是:
    分頁方案二:(利用ID大于多少和SELECT TOP分頁)效率最高,需要拼接SQL語句
    分頁方案一:(利用Not In和SELECT TOP分頁) 效率次之,需要拼接SQL語句
    分頁方案三:(利用SQL的游標(biāo)存儲過程分頁) 效率最差,但是最為通用

    在實(shí)際情況中,要具體分析。

    posted on 2007-03-15 15:09 鴻雁 閱讀(8890) 評論(0)  編輯  收藏

    主站蜘蛛池模板: 免费看一级做a爰片久久| 成年女人免费碰碰视频| 亚洲婷婷五月综合狠狠爱| 国产亚洲福利精品一区二区| 日韩在线a视频免费播放| 亚洲一卡2卡三卡4卡无卡下载| 最近中文字幕无吗高清免费视频| 亚洲制服丝袜一区二区三区| 色窝窝免费一区二区三区| 国产精品亚洲精品| 日本午夜免费福利视频| 真正全免费视频a毛片| 亚洲一区二区三区国产精品| 国产福利在线观看永久免费| 亚洲AV无码久久| 亚洲精品国产免费| 国产亚洲福利在线视频| 国产成人高清精品免费鸭子| 一区二区免费在线观看| 亚洲国产成人片在线观看| 日本人的色道免费网站| 亚洲gay片在线gv网站| 亚洲人成无码www久久久| 福利免费在线观看| 亚洲短视频在线观看| 免费看无码自慰一区二区| 香蕉视频在线免费看| 亚洲综合在线成人一区| 精品久久久久久久免费人妻| eeuss在线兵区免费观看| 亚洲国产精品不卡在线电影| 免费看美女被靠到爽| 99久久国产精品免费一区二区 | 日韩免费电影网站| 亚洲中文字幕无码一去台湾| 无码国产亚洲日韩国精品视频一区二区三区| 一个人看的免费观看日本视频www| 亚洲AV人无码综合在线观看| 最近2019中文免费字幕| 拍拍拍无挡免费视频网站| 亚洲一卡2卡4卡5卡6卡残暴在线|