`

mysql的高效存取过程分页

阅读更多

10w以上数据的效率比普通分页 快4-5倍

PROCEDURE p_pageList (m_pageNo int , m_perPageCnt int , m_indexcolumn varchar(100), m_column varchar(1000) , m_table varchar(1000) , m_condition varchar(1000), m_orderBy varchar(200) , inout m_totalPageCnt int)
BEGIN

IF m_totalPageCnt >=1 THEN
SET @sqlCnt = CONCAT('select count(1) into @pageCnt from ',m_table); -- 这条语句很关键,用来得到总数值
IF m_condition IS NOT NULL AND m_condition <> '' THEN
SET @sqlCnt = CONCAT(@sqlCnt,' where ',m_condition);
END IF;
PREPARE s_cnt from @sqlCnt;
EXECUTE s_cnt;
DEALLOCATE PREPARE s_cnt;
SET m_totalPageCnt = @pageCnt;
else
SET @pageCnt = 1; -- 总记录数
SET @limitStart = (m_pageNo - 1)*m_perPageCnt;
SET @limitEnd = m_perPageCnt;
SET @sql = CONCAT('select ',m_column,' from ',m_table); -- 主查询
SET @wsql = CONCAT('select ',m_indexcolumn,' from ',m_table); -- 子查询
IF m_condition IS NOT NULL AND m_condition <> '' THEN
SET @sql = CONCAT(@sql,' where ',m_condition);
SET @wsql = CONCAT(@wsql,' where ',m_condition);
END IF;


IF @limitStart<1000 THEN
IF m_orderBy IS NOT NULL AND m_orderBy <> '' THEN
SET @sql = CONCAT(@sql,' order by ',m_orderBy);
END IF;
SET @sql = CONCAT(@sql, ' limit ', @limitStart, ',', @limitEnd);
Else
IF m_orderBy IS NOT NULL AND m_orderBy <> '' THEN
SET @wsql = CONCAT(@wsql,' order by ',m_orderBy);
IF m_condition IS NOT NULL AND m_condition <> '' THEN
SET @sql = CONCAT(@sql,' and ', m_indexcolumn ,'>=(',@wsql, ' limit ', @limitStart,',1) ' ,' order by ', m_orderBy, ' limit ',@limitEnd);
else
SET @sql = CONCAT(@sql,' where ', m_indexcolumn ,'>=(',@wsql, ' limit ', @limitStart,',1) ' , ' order by ',m_orderBy, ' limit ',@limitEnd);
END IF;
Else
IF m_condition IS NOT NULL AND m_condition <> '' THEN
SET @sql = CONCAT(@sql,' and ', m_indexcolumn ,'>=(',@wsql, ' limit ', @limitStart,',1) ' , ' limit ',@limitEnd);
else
SET @sql = CONCAT(@sql,' where ', m_indexcolumn ,'>=(',@wsql, ' limit ', @limitStart,',1) ' , ' limit ',@limitEnd);
END IF;
END IF;
END IF;

PREPARE record from @sql;
EXECUTE record;
DEALLOCATE PREPARE record;

/*

select @sql;
*/

END IF;
END

分享到:
评论

相关推荐

    php 使用ADODB操作MYSQL

    php 使用ADODB操作MYSQL ,存取,生成html表格,分页,出错处理

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例231 文本文件的分页读取 298 4.4 文件操作 300 实例232 文件操作汇总 300 实例233 目录、文件定位器 302 实例234 改头换面 303 实例235 文件属性分析 304 实例236 文件类型检测 306 实例237 判断文件的权限 308 ...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例231 文本文件的分页读取 298 4.4 文件操作 300 实例232 文件操作汇总 300 实例233 目录、文件定位器 302 实例234 改头换面 303 实例235 文件属性分析 304 实例236 文件类型检测 306 实例237 判断文件的权限 308 ...

    PHP PHP5.0

    PHP数据的存取与传递 Session、cookie在实际项目中的应用 Session、cookie的定义以及使用方法 Session、cookie的记录方式 处理Session、cookie的函数 复杂样例(13个) 5 PHP文件操作 文件操作在实际项目中的应用 ...

    Sqlserver2000经典脚本

    │ 7.2.4 使用系统存储过程实现的通用分页存储过程.sql │ │ 7.3.1 实现随机分页的通用分页存储过程.sql │ │ 7.3.2 根据分类表实现的分页存储过程.sql │ │ │ └─其他 │ sp_cursor.sql...

    经典SQL脚本大全

    │ │ 7.2.4 使用系统存储过程实现的通用分页存储过程.sql │ │ 7.3.1 实现随机分页的通用分页存储过程.sql │ │ 7.3.2 根据分类表实现的分页存储过程.sql │ │ │ └─其他 │ sp_cursor.sql │ 基本方法.sql ...

    JDBC 3.0数据库开发与设计

    2.1.4 MySQL的安装及使用简介 2.2 使用JDBC连接数据库 2.2.1 SQLJ基本知识 2.2.2 用PL/SQL和Java建立应用程序的基本知识 2.2.3 PL/SQL和Java的特性 2.2.4 PL/SQL和Java的实际开发应用实例 2.2.5 Java连接各类...

    php网络开发完全手册

    15.3.7 结果集的分页 248 15.3.8 用户动态添加记录 249 15.3.9 用户动态更新记录 251 15.3.10 用户动态删除记录 253 15.4 使用PHP获取MySQL数据库的信息 255 15.4.1 获取数据库的信息 255 15.4.2 获取表的信息 256 ...

    火炬博客系统5

    软件及安装说明 &lt;br&gt; 本系统是一个Struts+Spring+Hibernate组合开发的博客系统,本系统使用分层体系架构,综合运用struts+spring+hibernate 三大主流开源框架构建,稳定高效、功能强大、易于维护。系统分为四个...

    火炬博客系统7

    软件及安装说明 &lt;br&gt; 本系统是一个Struts+Spring+Hibernate组合开发的博客系统,本系统使用分层体系架构,综合运用struts+spring+hibernate 三大主流开源框架构建,稳定高效、功能强大、易于维护。系统分为四个...

    火炬博客系统6

    软件及安装说明 &lt;br&gt; 本系统是一个Struts+Spring+Hibernate组合开发的博客系统,本系统使用分层体系架构,综合运用struts+spring+hibernate 三大主流开源框架构建,稳定高效、功能强大、易于维护。系统分为四个...

    xmljava系统源码-BJAF3.x:甲壳虫J2EE应用框架第3版,功能强大,简单易用

    支持各种数据库的分页功能(包括:Mysql/Oracle/SqlServer/Sysbase/PostgreSql/FireBird/H2等) 支持数据库序列功能 组合查询功能,无需动态拼接查询条件,提高开发效率 透明防止SQL注入 表字段查询透明脱敏 NOSQL...

    EasyJForum 3.0 企业版 简体UTF8.zip

    EasyJForum 采用了统一的数据适配层,因此可以很容易地实现对不同数据库的存取和扩展,同时又兼顾不同数据库的特点和性能。 此外,通过良好的程序架构和 CSS 技术,EasyJForum 实现了对多种界面风格的支持,使用者...

    EasyJForum 3.0 企业版 繁体BIG5.zip

    EasyJForum 采用了统一的数据适配层,因此可以很容易地实现对不同数据库的存取和扩展,同时又兼顾不同数据库的特点和性能。 此外,通过良好的程序架构和 CSS 技术,EasyJForum 实现了对多种界面风格的支持,使用者...

    EasyJForum 3.0 企业版 繁体UTF8.zip

    EasyJForum 采用了统一的数据适配层,因此可以很容易地实现对不同数据库的存取和扩展,同时又兼顾不同数据库的特点和性能。 此外,通过良好的程序架构和 CSS 技术,EasyJForum 实现了对多种界面风格的支持,使用者...

    SQL培训第一期

    结构化查询语言(Structured Query Language)简称SQL,是一种关系数据库查询语言,用于存取数据以及查询、更新和管理关系数据库系统。 1.2 语句结构 1.2.1 数据查询语言(DQL) 对数据库进行的信息查询,select。 ...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    产品安装过程中将会出现以上2个界面 9. 步骤8/8:完成安装  卸载Oracle 1. 在运行services.msc打开服务,停止Oracle的所有服务。 2. oracle11G自带一个卸载批处理\app\Administrator\product\11.2.0\dbhome_1\...

Global site tag (gtag.js) - Google Analytics