MySQL海量数据的通用存储过程分页代码

发布时间:2019-09-03编辑:脚本学堂
分享一例mysql存储过程实现的分页代码,用于mysql海量数据的分页,挺不错的,有兴趣的朋友可以参考研究下。

本节主要内容:
mysql海量数据的通用存储过程分页代码

本节为大家分享一例mysql 通用存储过程分页、海量数据分页的代码。

1,测试用的表结构:
 

复制代码 代码示例:
CREATE TABLE IF NOT EXISTS `test` (
  `id` int(11) NOT NULL auto_increment,
  `sort` int(11)
  `title` varchar(50),
  PRIMARY KEY  (`id`)
) ENGINE=innodb DEFAULT CHARSET=gb2312 AUTO_INCREMENT=1 ;

2,分页存储过程代码
 

复制代码 代码示例:
DELIMITER $$;
DROP PROCEDURE IF EXISTS `sp_page`$$
CREATE PROCEDURE `sp_page`(
 in _pagecurrent int,/*当前页*/
 in _pagesize int,/*每页的记录数*/
 in _ifelse varchar(1000),/*显示字段*/
 in _where varchar(1000),/*条件*/
 in _order varchar(1000)/*排序*/
)
COMMENT '分页存储过程'
BEGIN --//www.jb200.com
 if _pagesize<=1 then
  set _pagesize=20;
 end if;
 if _pagecurrent < 1 then
  set _pagecurrent = 1;
 end if;
 
 set @strsql = concat('select ',_ifelse,' from ',_where,' ',_order,' limit ',_pagecurrent*_pagesize-_pagesize,',',_pagesize);
 prepare stmtsql from @strsql;
 execute stmtsql;
 deallocate prepare stmtsql;
 set @strsqlcount=concat('select count(1) as count from ',_where);/*count(1) 此字段最好使用主键*/
 prepare stmtsqlcount from @strsqlcount;
 execute stmtsqlcount;
 deallocate prepare stmtsqlcount;
END$$
DELIMITER ;$$

调用示例:
例1:
 

复制代码 代码示例:
call sp_Page(1,3,'*','test','order by id desc');

例2:
 

复制代码 代码示例:
call sp_Page(1,3,'*','test where sort=1','order by id desc');

例3:
 

复制代码 代码示例:
call sp_Page(1,3,'id,title','test where sort=1','order by id desc');

您可能感兴趣的文章:

实例详解mysql limit大数据量分页优化的方法
学习MySQL数据分页查询(limit用法)
mysql优化之LIMIT,OFFSET分页
学习mysql中的limit分页优化
mysql分页limit速度太慢