文章探索:   分类:    关键字:  
  + 栏目导航
  + 相关文章
SQL Server 不存在或访问被拒绝
未与信任SQL Server连接相关联的解决..
SQL Server数据库六种数据移动方法
提高数据库访问速度
如何在两个SQLSERVER之间数据同步
将ACCESS的数据库转化为SQL SERVER的..
动态创建SQL Server数据库、表、存储..
在SQL Server中寻找资料库的TABLE数量..
SQL Server 7.0储存过程调试指南
关于SQL Server 2000的安全配置
用SQL语句来建立跟踪的问题
SQL SERVER2000备份和恢复存储过程
将Excel中的数据导入到SQL Server 200..
SQL Server数据库文件恢复技术
千万级数据库高速分页显示
找出存放用户名和密码的表
SQL Server 7六种数据移动方法
SQL Server中读取XML文件的简单做法
SQL Server 2000中的触发器使用
SQL Server中各个系统表的作用
在SQL Server存储过程中执行DTS包
Sqlserver中的一些技巧
SQL Server 2005:数据类型最大值
SQL Server 存储过程的分页
SQL Server 中易混淆的数据类型
SQL Server 服务器安装剖析
SQL Server导出导入数据方法
SQL数据恢复问题深入剖析
SQLServer和Oracle常用函数对比
用SQL Server为Web浏览器提供图像(一..


技术教程 -> SQLserver教程 ->  
千万级数据库高速分页显示
来源:转载   人气:844   录入时间:2007-11-8
     参考:
   千万级数据库高速分页显示(讨论)
   
   /*
    经测试,在 14483461 条记录中查询第 100000 页,每页 10 条记录按升序和降序第一次时间均为 0.47 秒,第二次时间均为 0.43 秒,测试语法如下:
    exec GetRecordFromPage news,newsid,10,100000
    news 为 表名, newsid 为关键字段, 使用时请先对 newsid 建立索引。
   */
   
   /*
    函数名称: GetRecordFromPage
    函数功能: 获取指定页的数据
    参数说明: @tblName 包含数据的表名
    @fldName 关键字段名
    @PageSize 每页记录数
    @PageIndex 要获取的页码
    @OrderType 排序类型, 0 - 升序, 1 - 降序
    @strWhere 查询条件 (注意: 不要加 where)
    */
   CREATE PROCEDURE GetRecordFromPage
    @tblName varchar(255), -- 表名
    @fldName varchar(255), -- 字段名
    @PageSize int = 10, -- 页尺寸
    @PageIndex int = 1, -- 页码
    @OrderType bit = 0, -- 设置排序类型, 非 0 值则降序
    @strWhere varchar(2000) = '' -- 查询条件 (注意: 不要加 where)
   AS
   
   declare @strSQL varchar(6000) -- 主语句
   declare @strTmp varchar(1000) -- 临时变量
   declare @strOrder varchar(500) -- 排序类型
   
   if @OrderType != 0
   begin
    set @strTmp = "<(select min"
    set @strOrder = " order by [" + @fldName +"] desc"
   end
   else
   begin
    set @strTmp = ">(select max"
    set @strOrder = " order by [" + @fldName +"] asc"
   end
   
   set @strSQL = "select top " + str(@PageSize) + " * from ["
    + @tblName + "] where [" + @fldName + "]" + @strTmp + "(["
    + @fldName + "]) from (select top " + str((@PageIndex-1)*@PageSize) + " ["
    + @fldName + "] from [" + @tblName + "]" + @strOrder + ") as tblTmp)"
    + @strOrder
   
   if @strWhere != ''
    set @strSQL = "select top " + str(@PageSize) + " * from ["
    + @tblName + "] where [" + @fldName + "]" + @strTmp + "(["
    + @fldName + "]) from (select top " + str((@PageIndex-1)*@PageSize) + " ["
    + @fldName + "] from [" + @tblName + "] where " + @strWhere + " "
    + @strOrder + ") as tblTmp) and " + @strWhere + " " + @strOrder
   
   
   




Copyright(C)2007-2024 广州市佳沛数码科技有限公司 版权所有
公司地址: 广州市荔湾区东漖北路560号511室
电话:020-81803473 传真:020-81544987