可以参考:
http://expert.csdn.net/Expert/topic/1491/1491533.xml?temp=.0799219

解决方案 »

  1.   

    参考:实现“存储过程实现分页”来提高速度http://expert.csdn.net/Expert/topic/1491/1491533.xml?temp=.8106806
      

  2.   

    用两个嵌套的 SELECT TOP 语句来指定每页的数据行数。
      

  3.   

    不然你也可以直接使用这样的SQL语句:
    select top N * from table where ... order by SomeField
      

  4.   

    飞翔.net论坛
    http://www.aspxcn.net
    --------------------------
    给你答案
      

  5.   

    piaoxue225(piaoxue225):
    没看到亚?
      

  6.   

    打开自定义分页功能,然后让Select语句每次从数据表中获得的记录数是分页的页数
    我想这应该是最优的了
      

  7.   

    我有更优的办法:objAdapter.Fill(ds,pageStart,maxPerpage,"Table")
      

  8.   

    我的分页是这样写的,但愿能给你帮助.CREATE PROCEDURE Bbs_Article_List
      @iSubject NVARCHAR (255),
      @iPage INT,
      @iPageSize INT,
      @iPageCount INT OUTPUT,
      @iNewCount INT OUTPUT,
      @iReplyCount INT OUTPUT
    AS
    BEGIN
    SET NOCOUNT ON
    DECLARE @iStart DATETIME
    DECLARE @iEnd DATETIME
    DECLARE @iTmpSelect NVARCHAR (1000)
    DECLARE @iRowCount INT
    SELECT @iNewCount=Count(*)
    FROM tArticles
    WHERE rSubject=@iSubject And rIsDel=0 And rRepID=0
    SELECT @iReplyCount=Count(*)
    FROM tArticles
    WHERE rSubject=@iSubject And rIsDel=0 And rRepID<>0
    SELECT @iPageCount=Count(*)
    FROM tArticles
    WHERE rSubject=@iSubject And rIsTop=0 And rIsDel=0 And rRepID=0
    SELECT @iPageCount=CEILING(@iPageCount/@iPageSize)+1IF @iPage<1
      SELECT @iPage=1IF @iPage>@iPageCount
      SELECT @iPage=@iPageCountSET @iRowCount = (@iPage-1) * @iPageSize + 1SELECT @iTmpSelect = 'SET NOCOUNT ON;SET ROWCOUNT @SPIntRowCount;SELECT @SPIntBeginID = rLastReplyTime FROM tArticles WHERE rSubject='+@iSubject+' And rIsTop=0 And rIsDel=0 And rRepID=0 ORDER BY rLastReplyTime DESC'
      EXECUTE SP_EXECUTESQL
         @iTmpSelect,
         N'@SPIntRowCount INT,@SPIntBeginID DATETIME OUTPUT',
         @SPIntRowCount=@iRowCount,@SPIntBeginID=@iStart OUTPUTSET @iRowCount = @iPage * @iPageSizeSELECT @iTmpSelect = 'SET NOCOUNT ON;SET ROWCOUNT @SPIntRowCount;SELECT @SPIntEndID = rLastReplyTime FROM tArticles WHERE rSubject='+@iSubject+' And rIsTop=0 And rIsDel=0 And rRepID=0 ORDER BY rLastReplyTime DESC'
      EXECUTE SP_EXECUTESQL
         @iTmpSelect,
         N'@SPIntRowCount INT,@SPIntEndID DATETIME OUTPUT',
         @SPIntRowCount=@iRowCount,@SPIntEndID=@iEnd OUTPUTSELECT @iTmpSelect = 'SET NOCOUNT OFF;SET ROWCOUNT 0;SELECT * FROM tArticles WHERE rSubject='+@iSubject+' And rIsTop=0 And rIsDel=0 And rRepID=0 AND rLastReplyTime BETWEEN'
    IF @iEnd > @iStart
        SELECT @iTmpSelect = @iTmpSelect+' @SPIntBeginID AND @SPIntEndID ORDER BY rLastReplyTime DESC'
    ELSE
        SELECT @iTmpSelect = @iTmpSelect+' @SPIntEndID AND @SPIntBeginID ORDER BY rLastReplyTime DESC'    EXECUTE SP_EXECUTESQL
            @iTmpSelect,
            N'@SPIntEndID DATETIME,@SPIntBeginID DATETIME',
            @SPIntEndID=@iEnd,@SPIntBeginID=@iStartSET NOCOUNT OFFEND
    GO
      

  9.   

    realljx(至尊十三少)
    你的方法还是ms标准的dg分页方法最好的是select top