MySQL分页技术、6种分页方法总结


概述

有朋友问: MySQL的分页似乎一直是个问题,有什么优化方法吗?
网上看到赶集网XX推荐了一些分页方法,但似乎不太可行,你能点评一下吗?

方法总结

方法1: 直接使用数据库提供的SQL语句

语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N
适应场景: 适用于数据量较少的情况(元组百/千级)
原因/缺点: 全表扫描,速度会很慢 且 有的数据库结果集返回不稳定(如某次返回1,2,3,另外的一次返回2,1,3). Limit限制的是从结果集的M位置处取出N条输出,其余抛弃.

方法2: 建立主键或唯一索引, 利用索引(假设每页10条)

语句样式: MySQL中,可用如下方法: SELECT FROM 表名称 WHERE id_pk > (pageNum10) LIMIT M
适应场景: 适用于数据量多的情况(元组数上万)
原因: 索引扫描,速度会很快. 有朋友提出: 因为数据查询出来并不是按照pk_id排序的,所以会有漏掉数据的情况,只能方法3

方法3: 基于索引再排序

语句样式: MySQL中,可用如下方法: SELECT FROM 表名称 WHERE id_pk > (pageNum10) ORDER BY id_pk ASC LIMIT M
适应场景: 适用于数据量多的情况(元组数上万). 最好ORDER BY后的列对象是主键或唯一所以,使得ORDERBY操作能利用索引被消除但结果集是稳定的(稳定的含义,参见方法1)
原因: 索引扫描,速度会很快. 但MySQL的排序操作,只有ASC没有DESC(DESC是假的,未来会做真正的DESC,期待…).

方法4: 基于索引使用prepare(第一个问号表示pageNum,第二个?表示每页元组数)
语句样式: MySQL中,可用如下方法: PREPARE stmt_name FROM SELECT FROM 表名称 WHERE id_pk > (? ?) ORDER BY id_pk ASC LIMIT M
适应场景: 大数据量
原因: 索引扫描,速度会很快. prepare语句又比一般的查询语句快一点。

方法5: 存储过程类(最好融合上述方法4)

语句样式: 不再给出
适应场景: 大数据量. 作者推荐的方法
原因: 把操作封装在服务器,相对更快一些。

方法6: 反面方法

网上有人写使用 SQL_CALC_FOUND_ROWS。 没有道理,勿模仿



相关阅读:
Win10 Cortana中惊现Uber 目前还不能正常运行
微信开放平台之网站授权微信登录功能
Java图像处理工具类
javascript从定义到执行 你不知道的那些事
JS判断变量是否为空判断是否null
javascript 判断字符串是否包含某字符串及indexOf使用示例
MS SQL Server2014链接到MS SQL Server 2000的解决方案及问题处理
php注册登录系统简化版
win10 10547升级10565失败卡在40%怎么办?win10 10547无法升级10565解决方法
Win10 9926通过解锁看到这个新的时钟托盘界面设计
win7组策略打不开 提示:MMC无法创建管理单元的解决办法
js中实现多态采用和继承类似的方法
PHP采用自定义函数实现遍历目录下所有文件的方法
深入Lumisoft.NET实现邮件发送功能的方法详解
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 丢丢发表日志:翻开相册 怀念过去的句子伤感 仙侠奇缘之花千骨经典语录 走着,停着,守候着 雨夜惊魂 告别 《我多想……》教学设计 爱情故事经典语录 龙苍沟苍龙神眼的传说(胡芳彬,号求懂先生) 小学音乐教师自我鉴定 小学五年级作文450字:“烧碳工”和“绅士”读后感 人生五十 关于陶瓷的作文 我心里的他作文1200字 一次难忘的授课经历 小学电子百拼图兴趣小组活动总结 2016每日工作总结范文简短 没问题英语怎么说 小学五年级作文500字:瞧!我们这帮子人 毛泽东诗词精选(手迹诗词)一 与君一席话,书史都撂下 县2016年乡村旅游工作总结 潇湘之旅:(三)张家界 学生军训评语100字 上海2006年语文高考最高分作文点评作文1200字 五一劳动节贺词 最美的时光作文 家乡的梨树地 小学五年级作文500字:摸田螺 2014年党支部换届选举工作报告(讨论稿) 高中高二作文1000字:乌云赋 《小人精和迷糊豆》读后感 我们人真的很贱 浅议房屋建筑工程施工管理 写给人生的十封信,世界上最美的十封信 努力的享受青春 “Ο”是什么?作文500字 如何判断眼前的男人作文350字 小松鼠的快乐生活作文1800字 幸福的愚人节 小学三年级作文450字:座右铭给我的启发 你是否常常误判他人?误判让你的人际关系越来越窄 喜欢听雨 我终于会做家务了 又是一个不眠的夜 谢谢你,外公作文200字 晚宴主持词 似乎觉得心一下子就静下来了,这个夜里,我想起了你 用岁月在春天里写诗 推进企业改革要加强对职工的形势教育

Copyright © 2016 phpStudy |