zoukankan      html  css  js  c++  java
  • 关于大数据量的分页。。。

    这是我在网上摘录的

    /*
     名称:spAll_ReturnRows
     输入:
     输出:
     调用:
      EXEC spAll_ReturnRows 'SELECT  * FROM 表名', 页号, 返回记录数, '主键', '排序字段'
      spAll_ReturnRows 'SELECT  * FROM all_Categories',2,10,'[ID]','[ID]'
     说明:[百万级]通用存储过程.分页存储过程..返回指定返回条数、指定页数的记录
     作者:Dili J.F. Senders
      邮件:diliatwellknow.net
      网站:http://www.wellknow.net
      更新:20040610
      支持:http://bbs.wellknow.net
      版权:转述时请注明来源:用思维创造未来的Wellknow.net
    */

    CREATE PROCEDURE dbo.spAll_ReturnRows
    (
     @SQL nVARCHAR(4000),
     @Page int,
     @RecsPerPage int,
     @ID VARCHAR(255),
     @Sort VARCHAR(255)
    )
    AS

    DECLARE @Str nVARCHAR(4000)

    SET @Str='SELECT   TOP '+CAST(@RecsPerPage AS VARCHAR(20))+' * FROM ('+@SQL+') T WHERE T.'+@ID+' NOT IN
    (SELECT   TOP '+CAST((@RecsPerPage*(@Page-1)) AS VARCHAR(20))+' '+@ID+' FROM ('+@SQL+') T9 ORDER BY '+@Sort+') ORDER BY '+@Sort

    PRINT @Str

    EXEC sp_ExecuteSql @Str
    GO

    //=======================================================
    但是说句老实话,
    我还有性能差一点的但更简单的方法。

    DataSet+”select 索引键”+后置式帮定。
    什么意思?
    还是利用DataSet但只读取表中的索引主键,这样DataSet只有很小的数据量。
    然后在数据帮定的时候,再读取具体数据。
    比如10条,则读10次具体数据。
    虽然,会有10+1与数据库的交互,但是由于数据量小,同时,使用索引主键读取,
    则速度会比较快。
    而且它可以直接使用DataGrid的帮定功能,为我等懒人减少很多活。


  • 相关阅读:
    使用TortoiseGit从GitHub下拉上传代码配置
    Git 安装和使用教程(转载)
    C++的STL之map自动排序特性
    C语言实现随机生成0~100的数
    C语言实现随机生成0或1
    和 区别
    C语言文件操作函数
    php的缓冲/缓存 js对象 ,php编程的深入思考-1
    apache安装时的一些术语
    在linux下手动安装 apache, php, mysql--终极版
  • 原文地址:https://www.cnblogs.com/king_astar/p/35211.html
Copyright © 2011-2022 走看看