首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 好东西分享哟!! 利用SqlServer内部存储过程实现快速方便的分页 [已结帖,结帖人:zxbyhcsdn]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zxbyhcsdn
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2007-02-09 15:23:48 楼主
    >   SqlServer内部的分页功能,强啊!!

    1)只需要提供Sql语句和每页的记录数,页数就可以了
    2)速度超快哟,100W记录1~3秒就分出来了
    3)对于存储过程特别好用
    --//调用的方式

    exec   up_zbh_DivPageBySql   'select   *   from   表 ',10,3
    存储过程
    exec   up_zbh_DivPageBySql   'exec   存储过程 ',10,1  

    --//我吧它封装成一个存储过程,调用的时候方便的很哈!!
    create   procedure   up_zbh_DivPageBySql
      @strSql   varchar(8000),
      @nPageSize   int,
      @nPageCount   int
    as
            SET   NOCOUNT   ON  
            DECLARE   @P1   INT,
            @nRowCount   INT  

            --//注意:@scrollopt   =   1   会取得Select的时候的总行数
            EXEC   sp_cursoropen   @P1   OUTPUT,   @strSql,   @scrollopt   =   2,   @ccopt   =   335873,   @rowcount   =   @nRowCount   OUTPUT

            IF   (@P1   !=   0)
            BEGIN
    --SELECT   @nRowCount   AS   nRecordCount,   ceiling(1.0   *   @nRowCount   /   @nPageSize)   AS   nPageCount,   @nPageCount   AS   nPage
    SET   @nPageCount   =   (@nPageCount   -   1)   *   @nPageSize   +   1  
    EXEC   sp_cursorfetch   @P1,   32,   @nPageCount,   @nPageSize    
    EXEC   sp_cursorclose   @P1
            END

    GO

    --//调用的方式

    exec   up_zbh_DivPageBySql   'select   *   from   表 ',10,3
    存储过程
    exec   up_zbh_DivPageBySql   'exec   存储过程 ',10,1

    好东东,拿出来给大家共享,哈哈!!
    比以前的那些个存储过程分页方便,简单多了!!
    200  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zxbyhcsdn
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-09 15:25:241楼 得分:0
    exec   up_zbh_DivPageBySql   'exec   存储过程 ',
                                                      10,--每页10条记录
                                                      2     --返回第2页
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • akuzou
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-09 15:27:262楼 得分:0
    收藏学习,谢谢楼主共享
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jacobsan
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-09 15:32:173楼 得分:10
    2005?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • tntzbzc
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-09 15:34:494楼 得分:10
    很久前就看过

    攒楼主一下


    接分
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • baggio785
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-09 15:35:355楼 得分:0
    mark~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • baggio785
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-09 15:36:286楼 得分:0
    用的是游标吧?

    并发数多的时候会不会发生阻塞或者死锁啊?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • marco08
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 3

    发表于:2007-02-09 15:46:027楼 得分:10
    收藏先
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cefriend
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-09 16:24:318楼 得分:0
    自已测试
    选插上10万条试试效果如何
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • DVD_01
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-09 16:24:569楼 得分:0
    谢谢楼主,测试一下,好的就收藏!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • DVD_01
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-09 16:29:5210楼 得分:10
    不错,再UP一次
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zxbyhcsdn
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-09 17:18:1111楼 得分:0
    2)速度超快哟,100W记录1~3秒就分出来了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zxbyhcsdn
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-09 17:18:5812楼 得分:0
    再说明一点,   Sqlserver2000可用哈!!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fellowcheng
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-09 17:34:0813楼 得分:10
    学习
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wangtiecheng
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-09 18:00:4614楼 得分:0
    收藏
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • IT_zen
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-09 18:03:1315楼 得分:0
    学了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chuifengde
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-09 21:00:2816楼 得分:0
    pass
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zi12zi
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-09 22:33:4617楼 得分:10
    jf
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • j9988
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

    发表于:2007-02-09 23:15:1518楼 得分:0
    "速度超快哟,100W记录1~3秒就分出来了 "  
    ----这是一种误解.不是它快.是你的语句,或存储过程快.  
    我N年前就在这儿发过.但从来不在实际中用它.
    因为它不好用.如果表设计好了.它根本没用.反而麻烦.  

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • libin_ftsafe
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 5

    发表于:2007-02-09 23:44:3619楼 得分:10
    :)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • mlb2729
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-10 08:37:2720楼 得分:0
    謝謝..
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • mlb2729
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-10 08:37:4621楼 得分:0
    收藏..
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hertcloud
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

    发表于:2007-02-10 08:55:4522楼 得分:10
    恭喜  


    恭喜  


    恭喜....
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • shiliangdong
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-10 08:57:3523楼 得分:10
    收藏..
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • babay2008
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-10 10:02:4924楼 得分:0
    mark
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • caixia615
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-10 10:09:4325楼 得分:0
    看看,呵呵
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • haoanzi
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-10 11:32:3226楼 得分:0
    --//我吧它封装成一个存储过程,调用的时候方便的很哈!!
        好,学习+收藏
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xk000
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-10 12:33:5527楼 得分:10
    学习中...   欢迎加入ASP.NET(C#)学习交流QQ群号:①32801051   ②23222074(请不要两个群都加)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jyk
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-10 12:54:4028楼 得分:0
    2)速度超快哟,100W记录1~3秒就分出来了

    这还算快呀,我的几十毫秒就出来了,以前发过帖子的。

    http://topic.csdn.net/T/20050802/08/4182510.html
    http://topic.csdn.net/T/20050804/20/4189627.html
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • mlb2729
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-10 13:34:4829楼 得分:0
    收藏.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hm8030
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-10 13:40:0030楼 得分:0
    好東西啊
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dssw
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-10 16:17:5931楼 得分:10
    标记,收藏,以后研究。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • free_kyy
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-10 19:03:5932楼 得分:10
    漫漫研究
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • kingofcoder2
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-11 07:38:5233楼 得分:0
    该回复于2009-03-09 12:19:46被管理员或版主删除
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • houyichong
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-11 08:24:1134楼 得分:0
    老大不是有个分页的存储过程吗?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • blueice008
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-11 09:28:5435楼 得分:10
    学习.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wangtiecheng
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-11 09:43:3836楼 得分:10
    :)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • leihentulong
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-11 11:40:4037楼 得分:10
    mark
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ilik
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-11 13:19:0138楼 得分:10
    --通用存储过程。  


    create   procedure   [dbo].[CommonPageSelect]
    (
    @SqlWhere   varchar(1000)= ' ',   --查询条件
    @pagenum   int=20,--每页的记录数
    @beginline   int=1,   --第几页,默认第一页
    @SqlTable   varchar(5000),--要查询的表或视图,也可以一句sql语句
    @SqlColumn   varchar(4000),--查询的字段
    @SqlPK   varchar(50),--主键  
    @SqlOrder   varchar(200),--排序
    @Count   int=0   output
    )
    as
    set   nocount   on
    declare   @PageLowerBound   int
    declare   @PageUpperBound   int
    declare   @sqlstr   nvarchar(2000)

    --获取记录数
    IF   @beginline=1   --可根据实际要求修改条件
    BEGIN
    set   @sqlstr=N 'select   @sCount=count(1)   FROM   '+@SqlTable+ '   WHERE   1=1 '+@SqlWhere
    Exec   sp_executesql   @sqlstr,N '@sCount   int   outPut ',@Count   output
    END
    --print   @Count
    /**/
    set   @PageLowerBound=(@beginline-1)*@pagenum
    set   @PageUpperBound=@PageLowerBound+@pagenum
    create   table   #pageindex(id   int   identity(1,1)   not   null,nid   int)
    set   rowcount   @PageUpperBound  
    set   @sqlstr=N 'insert   into   #pageindex(nid)   select   '+@SqlPK+ '   from   '+@SqlTable+ '   where   1=1   '+@SqlWhere+@SqlOrder

    Exec   sp_executesql   @sqlstr

    set   @sqlstr= 'select   '+@SqlColumn+ '   FROM   '+   @SqlTable   + '   inner   join   #pageindex   p   on   '+@SqlPK+ '=p.nid   and   (p.id> '+STR(@PageLowerBound)+ ')   and   (p.id <= '+STR(@PageUpperBound)+ ') '   +@SqlOrder

    Exec   sp_executesql   @sqlstr
    set   nocount   off
    drop   table   #pageindex
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hcl8260
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-11 22:21:2339楼 得分:0
    学习
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jinanjiang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-12 09:57:1940楼 得分:10
    收藏
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xiequanqin
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-12 10:01:3341楼 得分:10
    MARK~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zxbyhcsdn
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-12 10:11:0842楼 得分:0
    To:   ilik(煊烨※涅磐)   (   )   信誉:100         Blog  
    -------------------------
    那个通用的确是通用
    但是不适合存储过程返回的记录的分页哟!!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zxbyhcsdn
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-12 10:13:4843楼 得分:0
    To:   houyichong(喜欢坐在海边静静的看海)   (   )   信誉:100         Blog  
        老大不是有个分页的存储过程吗?
    -------------------------------------------------
    不能够用到存储过程返回的记录的分页,比如下面的情况就无能为力了:

    exec   up_zbh_DivPageBySql   'exec   存储过程 ',
                                                      10,--每页10条记录
                                                      2     --返回第2页
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zxbyhcsdn
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-12 10:23:4044楼 得分:0
    TO:   j9988(j9988)   (   )   信誉:313         Blog     2007-2-9   23:15:16     得分:   0    
            "速度超快哟,100W记录1~3秒就分出来了 "  
              ----这是一种误解.不是它快.是你的语句,或存储过程快.  
              我N年前就在这儿发过.但从来不在实际中用它.
              因为它不好用.如果表设计好了.它根本没用.反而麻烦.
    -------------------------------------------------------
    我是执行的  
    exec   up_zbh_DivPageBySql   'select   *   from   100W记录的表 ',
                                                      10,--每页10条记录
                                                      2     --返回第2页

    我的语句根本就不快, 'select   *   from   100W记录的表 '执行的是全表扫描,

    而且我不知道它什么地方不好用,   麻烦在什么地方拉??


    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • being21
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-12 10:29:5645楼 得分:0
    看看,学习.听听,学习.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zxbyhcsdn
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-12 10:31:4846楼 得分:0
    而且我的查询100W记录1~3秒是在破机器上运行的,生产系统上绝对快多了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zxbyhcsdn
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-12 10:35:3947楼 得分:0
    TO:jyk(今天由我来写的代码,明天就让程序自己完成!喜欢编程。和气生财。共同提高。共同   进步!)  

        这还算快呀,我的几十毫秒就出来了,以前发过帖子的。

        http://topic.csdn.net/T/20050802/08/4182510.html
        http://topic.csdn.net/T/20050804/20/4189627.html
    -------------------------------------
    你看看你的查询,你吧索引去掉,看看还可能这么快么??


    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zxbyhcsdn
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-12 10:36:5348楼 得分:0
    欢迎和我讨论
    我的QQ:53395741
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hui_hui_2007
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-12 11:42:5849楼 得分:0
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • teacher1998
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-12 12:10:4450楼 得分:0
    up
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • postren
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

    发表于:2007-02-12 12:40:1951楼 得分:10
    sql   2005中可以用   row_number(),效率没测试过
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jyk
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-12 12:45:3552楼 得分:0
    为什么不用索引呢?

    你的不用索引吗?

    即使你的可以不用索引,那也需要1-3秒,我的用了索引,几十毫秒,哪个好?

    你的加上了索引可以达到几十毫秒吗?

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wangjt18
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-12 12:51:4653楼 得分:10
    mark
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ilik
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-12 12:56:3054楼 得分:0
    to   zxbyhcsdn(沙子)  
    那个通用的确是通用
    但是不适合存储过程返回的记录的分页哟!!  

    我没必要从存储过程中返回记录集啊..   指定的记录啊
    事实上支持这样的功能是鸡肋啊
    如果我一个存储过程返回10w条记录,然后再弄你的分页   ..  
    执行顺序是不是这样,先存储过程检索出10w记录,然后   再从这些记录中扣出指定的页呢?


    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zxbyhcsdn
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-12 12:57:2955楼 得分:0
    To:   jyk(今天由我来写的代码,明天就让程序自己完成!喜欢编程)   (   )   信誉:100         Blog
    ---------------------------------------------        
    各人机器不同,你自己测试!!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jason_mf
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-12 12:58:1456楼 得分:0
    收藏,谢谢LZ
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zxbyhcsdn
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-12 12:58:3457楼 得分:0
    TO:   ilik(煊烨※涅磐)   (   )   信誉:100         Blog  
            to   zxbyhcsdn(沙子)  
    那个通用的确是通用
    但是不适合存储过程返回的记录的分页哟!!  

    我没必要从存储过程中返回记录集啊..   指定的记录啊
    事实上支持这样的功能是鸡肋啊
    如果我一个存储过程返回10w条记录,然后再弄你的分页   ..  
    执行顺序是不是这样,先存储过程检索出10w记录,然后   再从这些记录中扣出指定的页呢?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ilik
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-12 12:58:5958楼 得分:0
    ---sql   2005中可以用   row_number(),效率没测试过  

    玩过,效率并不高
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zxbyhcsdn
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-12 13:00:4859楼 得分:0
    TO:   ilik(煊烨※涅磐)   (   )   信誉:100         Blog  
            to   zxbyhcsdn(沙子)  
            那个通用的确是通用
            但是不适合存储过程返回的记录的分页哟!!  

            我没必要从存储过程中返回记录集啊..   指定的记录啊
            事实上支持这样的功能是鸡肋啊
            如果我一个存储过程返回10w条记录,然后再弄你的分页   ..  
            执行顺序是不是这样,先存储过程检索出10w记录,然后   再从这些记录中扣出指定的页呢?
    ------------------------------------------------------------
      存储过程返回10W的确很少遇到这样的情况,但是返回几百上千还是经常有可能的,但是在BS上,一页显示几百上千还是不太爽哟!!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zst126
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-12 13:09:2360楼 得分:0
    收藏
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • w75251455
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-12 13:14:2961楼 得分:0
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • FEB15
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-12 13:24:2462楼 得分:0
    在补上两个存储过程版的翻页

    http://feb-.blog.163.com/blog/static/165778920068295342809/

    http://feb-.blog.163.com/blog/static/165778920071141459904/


    楼主100万   1~3秒,在Count那里有瓶颈
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jyk
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-12 13:38:2463楼 得分:0
    EXEC   sp_cursorfetch   @P1,   32,   @nPageCount,   @nPageSize    
    EXEC   sp_cursorclose   @P1

    我对于这两个存储过程不了解,而我又不想用我不了解的东东。

    以后有必要的话再去了解吧。

    感谢搂主提供这种方法,其实我也只是说了一下我的方法呀。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zxbyhcsdn
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-12 13:54:0364楼 得分:0
    呵呵!!言辞有冒犯之处,请多多见量!!

    我也是前不久遇到一个存储过程要返回上W的记录,
    我都准备吧存储过程的记录放到临时表,然后在分页的了
    后来找到这个方法,感觉的确要方便点!!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • taxpayer
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-12 14:02:4165楼 得分:0
    Mark
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • awenhao
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-12 14:08:3666楼 得分:0
    呵呵,此类分页技术我一般都给与鄙视,我觉得一句话分页更为方便。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • syhan
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-12 14:28:2667楼 得分:0
    标记,以后可能用到
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zxbyhcsdn
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-12 14:30:2368楼 得分:0
    结帖
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zzzsea
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-12 15:08:4769楼 得分:0
    收藏一下,也许以后会用
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • kingnew
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-13 08:25:5970楼 得分:0
    mark
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zut168
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-13 09:16:0571楼 得分:0
    收藏学习
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • nnhy
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-13 09:32:0372楼 得分:0
    我这里测试,751万数据,8秒多。
    如果“@scrollopt   =   1   会取得Select的时候的总行数”,则需要53秒

    而我使用最普通的not   in   分页,也才2秒多……
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cansum396
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-13 11:08:3373楼 得分:0
    不错
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lih163
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-13 13:02:3674楼 得分:0
    ok
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zwjleo
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-13 14:49:0175楼 得分:0
    mark
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • superhasty
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-13 14:59:3276楼 得分:0
    good
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yuanzh
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-13 16:10:5077楼 得分:0
    mark
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zdf9218
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-13 17:04:5078楼 得分:0
    mark
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • love_study
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-13 21:47:2679楼 得分:0
    楼主,你的存储过程很不错,收藏。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ocochi
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-14 09:15:1480楼 得分:0
    mark
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dh20156
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-15 22:29:4581楼 得分:0
    up
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lcm008
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-16 00:28:4982楼 得分:0
    楼主,你qq多少啊,可以教教我么?急
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • kevin_yumin
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-03-05 15:52:4483楼 得分:0
    mark
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • stevensinclair
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-03-09 09:47:4284楼 得分:0
    看看也好
    修改 删除 举报 引用 回复