<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)  編輯  收藏

    主站蜘蛛池模板: 亚洲一欧洲中文字幕在线| 国产精品久免费的黄网站| 久久久久成人精品免费播放动漫| 无码的免费不卡毛片视频| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 午夜宅男在线永久免费观看网 | 亚洲国产精品网站在线播放| 亚洲avav天堂av在线网爱情| 亚洲伦理中文字幕| 中文字幕在线观看亚洲视频| 最新亚洲卡一卡二卡三新区| 亚洲精品免费网站| 亚洲国产精品美女久久久久| 亚洲av无码无线在线观看| 日韩色视频一区二区三区亚洲| 亚洲av无码专区在线观看亚| 久久亚洲精品11p| 日韩精品免费一线在线观看| 一级毛片免费在线播放| 国产精品免费大片一区二区| 97超高清在线观看免费视频| 日本一道本不卡免费 | 国产福利免费视频 | 99re6在线精品视频免费播放| 中文字幕天天躁日日躁狠狠躁免费| 亚洲香蕉免费有线视频| 在线观看免费人成视频色| 永久久久免费浮力影院| 亚洲av片一区二区三区| 亚洲精品午夜无码专区| 亚洲国产精品热久久| 亚洲日韩在线视频| 亚洲AV无码男人的天堂| 国产免费高清69式视频在线观看| 国产免费网站看v片在线| 免费看片在线观看| 国产精品国产午夜免费福利看| 亚洲精品国产综合久久一线| 亚洲国产成人久久综合一 | 亚洲国产一区二区视频网站| 亚洲AV无码专区在线播放中文 |