• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > 分页查询 效率最高

分页查询 效率最高

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了mssql,分页查询等相关知识,希望本文的分享对您有所帮助

给大家分享个效率最高的分页查询 5000万级别有效 比 ROWNUMBER 和Top效率高

代码如下:
/*

日期:2009-03-19
功能:根据各种条件获取 游戏国家任务 列表数据
*/
Create procedure [dbo].[PrGs_Nation_Task_GetList]

@PageSize int = 100, -- 每页显示记录条数,默认为100
@PageIndex int = 1, -- 当前提取要显示的页码,默认为1,数据库根据PageSize,PageIndex 计算返回一页数据

@RetTotal int output, -- 记录总数
@RetCount int output, -- 返回记录数
@RetPageIndex int output, -- 输出当前页码
@ReturnDesc varchar(128) output -- 返回操作结果描述
as
begin

set nocount on
set xact_abort on

set @RetTotal = 0
set @RetCount = 0
set @RetPageIndex = @PageIndex




-- 多条件取值
declare @Err int -- 错误
declare @PageCount int -- 总页数
declare @BeginRID int -- 开始行 Rid
declare @MaxRow int -- 最后行

select @RetTotal = count(*)
from NationTask

select @Err = @@ERROR

if @Err <> 0
begin
set @ReturnDesc = '提取国家任务总数失败!'
return -1
end

-- 如果无数据, 则返回空结果集
if @RetTotal = 0
begin
set @ReturnDesc = '当前条件无国家任务记录!'
return 1
end

-- 计算总页数
set @PageCount = @RetTotal / @PageSize

if @RetTotal % @PageSize > 0
begin
set @PageCount = @PageCount + 1
end

-- 超过总页数,则返回空结果集
if @PageIndex > @PageCount
begin
set @ReturnDesc = '当前条件无国家任务记录!'
return 1
end

-- 获取 要返回页面的 第一行纪录的 Rid
set @MaxRow = @PageSize * (@PageIndex - 1) + 1

set rowcount @MaxRow

select @BeginRID = Rid
from NationTask
order by Rid desc


-- 返回数据列表
set rowcount @PageSize

select Rid
,TaskName
,TaskTitle
,ImageID
,EffectID
,StartTime
from NationTask
where Rid <= @BeginRID
order by Rid desc

set @RetCount = @@rowcount

-- 结束
set @ReturnDesc = '提取国家任务列表成功!'
return 1
end
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 基于mssql导mysql遇到的问题
  • 解析MSSQL跨数据库查询的实现方法
  • mssql2008 自定义表类型实现(批量插入或者修改)
  • MSSQL根据ID进行分页实现方法
  • mssql转换mysql的方法小结
  • MySQL与MSSQl使用While语句循环生成测试数据的代码
  • MSSQL output使用
  • MSSQL 添加字段说明
  • 如何操作MSSQL查询数据分页
  • MSSQL 存储过程加密详解

相关文章

  • 2018-12-05MySQL如何创建用户?
  • 2017-05-11centos下mysql主从同步快速设置步骤分享
  • 2018-12-05针对SQL 2000 的分页存储过程代码分享
  • 2018-12-05mysql "too many connections" 错误 之 mysql解决方法
  • 2017-05-11深入探讨:MySQL数据库MyISAM与InnoDB存储引擎的比较
  • 2018-12-05实例优化ORACLE数据库性能
  • 2018-12-05将mater库中的系统存储过程批量生成*.sql文件 通用且非常实用
  • 2018-12-05 sql中的iif语句详解
  • 2018-12-05mysql 任务调度实现
  • 2018-12-05Innodb 状态的详解

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • SQLServer ntile获取每组前10%的数据
    • mysqld_safe启动脚本源码阅读、分析
    • windows环境下mysql数据库的主从同步备份步骤(单向同步)
    • Mysql创建外键约束的两种方式
    • mysql日期和时间
    • Windows Oracle常见服务介绍
    • Mysql-聚簇索引
    • MySQL函数大全及用法示例分享
    • 在MySQL中生成随机密码的方法
    • 6个简单的SQL优化 SELECT 语句

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有