• 关于大数据量的分页。。。


    这是我在网上摘录的

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


  • 相关阅读:
    C# Assembly 反射
    C# Assembly 反射
    为C#自定义控件添加自定义事件
    为C#自定义控件添加自定义事件
    redis5.0的槽点迁移,随意玩(单机迁移集群)
    redis5.0的槽点迁移,随意玩(单机迁移集群)
    []MongoDB优化的几点原则
    []MongoDB优化的几点原则
    当MongoDB遇见Spark
    当MongoDB遇见Spark
  • 原文地址:https://www.cnblogs.com/king_astar/p/35211.html
Copyright © 2020-2023  润新知