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的帮定功能,为我等懒人减少很多活。


  • 相关阅读:
    爬虫大作业之爬取笔趣阁小说
    数据结构化与保存
    使用正则表达式,取得点击次数,函数抽离
    爬取校园新闻首页的新闻
    网络爬虫练习
    Hadoop综合大作业
    理解MapReduce
    熟悉常用的HBase操作
    熟悉常用的HDFS操作
    爬虫大作业
  • 原文地址:https://www.cnblogs.com/king_astar/p/35211.html
Copyright © 2011-2022 走看看