专业汉语词典知识平台,分享汉字词语知识、历史文学知识解答!

励北网
励北网

MySQL分页方法

来源:小易整编  作者:小易  发布时间:2022-06-10 06:11
摘要:方法1:直接使用数据库提供的SQL语句。方法2:建立主键或唯一索引,利用索引(假设每页10条)。方法3:基于索引再排序。方法4:基于索引使用prepare(第一个问号表示pageNum,第二个表示每页元组数)...

MySQL分页方法

  MySQL的分页似乎一直是个问题,有什么优化Mysql分页方法吗?下面总结了一些Mysql分页方法,大家一起来看看。

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

  语句样式:MySQL中,可用如下方法:SELECT * FROM 表名称 LIMIT M,N。

  适应场景:适用于数据量较少的情况(元组百/千级)。

  原因/缺点:全表扫描,速度会很慢 且 有的数据库结果集返回不稳定(如某次返回1,2,3,另外的一次返回2,1,3)。Limit限制的是从结果集的M位置处取出N条输出,其余抛弃。

MySQL分页方法

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

  语句样式:MySQL中,可用如下方法:

  代码如下:

  SELECT * FROM 表名称 WHERE id_pk > (pageNum*10) LIMIT M。

  适应场景:适用于数据量多的情况(元组数上万)。

  原因:索引扫描,速度会很快。有朋友提出因为数据查询出来并不是按照pk_id排序的,所以会有漏掉数据的情况,只能方法3。

方法3:基于索引再排序

  语句样式:MySQL中,可用如下方法:SELECT * FROM 表名称 WHERE id_pk > (pageNum*10) ORDER BY id_pk ASC LIMIT M。

  适应场景:适用于数据量多的情况(元组数上万). 最好ORDER BY后的列对象是主键或唯一所以,使得ORDERBY操作能利用索引被消除但结果集是稳定的(稳定的含义,参见方法1)。

  原因:索引扫描,速度会很快. 但MySQL的排序操作,只有ASC没有DESC(DESC是假的,未来会做真正的DESC,期待)。

MySQL分页8种方法

方法4:基于索引使用prepare(第一个问号表示pageNum,第二个表示每页元组数)

  语句样式:MySQL中,可用如下方法:

  代码如下:

  PREPARE stmt_name FROM SELECT * FROM 表名称 WHERE id_pk > (?* ?) ORDER BY id_pk

  ASC LIMIT M。

  适应场景:大数据量。

  原因:索引扫描,速度会很快. prepare语句又比一般的查询语句快一点。

方法5:利用MySQL支持ORDER操作可以利用索引快速定位部分元组,避免全表扫描。

  比如:读第1000到1019行元组(pk是主键/唯一键)。

  代码如下:

  SELECT * FROM your_table WHERE pk>=1000 ORDER BY pk ASC LIMIT 0,20。

方法6:利用"子查询/连接+索引"快速定位元组的位置,然后再读取元组. 道理同方法5

  如(id是主键/唯一键,蓝色字体时变量):

  利用子查询示例:

  代码如下:

  SELECT* FROMyour_table WHEREid <=

  (SELECTid FROMyour_table ORDER

  BYid descLIMIT ($page-1)*$pagesize ORDERBYid desc

  LIMIT $pagesize

  利用连接示例:

  代码如下:

  SELECT* FROMyour_table ASt1

  JOIN(SELECTid FROMyour_table ORDERBY

  id descLIMIT ($page-1)*$pagesize ASt2

  WHERE

  t1.id <= t2.id ORDERBYt1.id descLIMIT $pagesize;

MySQL分页

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

  语句样式:不再给出。

  适应场景:大数据量,推荐的方法。

  原因:把操作封装在服务器,相对更快一些。

方法8:反面方法

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

  基本上,可以推广到所有数据库,道理是一样的。但方法5未必能推广到其他数据库,推广的前提是,其他数据库支持ORDER BY操作可以利用索引直接完成排序。


本文地址:百科问答频道 https://www.neebe.cn/wenda/2487.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!


百科问答
小编:小易整编
相关文章相关阅读
  • 照片出现扫描仪效果

    照片出现扫描仪效果

    照片出现扫描仪效果?和你的iPhone合体:扫描仪般效果的文件。1登陆AppStore 下载扫描全能王;2打开,跟照相一样,点击下方的照相按钮,对准你要拍摄的文件,拍摄吧!...

  • 硕鼠怎么用

    硕鼠怎么用

    硕鼠怎么用?对于在寻找动漫或影视剧集下载资源比较不在行的孩纸来说,硕鼠就是一个利器,它支持数十个网站视频的下载,而且速度挺快,对于同一资源不同清晰度也可以进行相应的选择,像优酷视频自动分割成几个小段,硕鼠也会在下载之后自动合并,使用起来相当......

  • 360免费wifi要钱吗?360免费wifi真的免费吗?

    360免费wifi要钱吗?360免费wifi真的免费吗?

    360免费wifi不要钱。360免费WiFi是一款Android智能设备必备的WiFi热点管理工具,用户可通过本软件免费接入CMCC、ChinaUnicom、ChinaNet等WiFi热点,配合独有的360度WiFi安全检测和免费WiFi地......

  • 向日葵远程控制软件

    向日葵远程控制软件

    向日葵远程控制是一款面向企业和专业人员的远程PC管理和控制的服务软件。用户在任何可连入互联网的地点,都可以轻松访问和控制安装了向日葵远程控制客户端的远程主机,整个过程完全可以通过浏览器进行,无需再安装软件...

  • 数据恢复软件哪个好

    数据恢复软件哪个好

    数据恢复软件哪个好?数据恢复精灵是数据恢复类软件中后起之秀,但数据恢复精灵的来头可不小,它是国内最早,也是最知名的磁盘分区管理与数据恢复软件 DiskGenius 的开发团队的最新力作,可谓出身名门。...

  • 五笔怎么打

    五笔怎么打

    五笔怎么打?学五笔首先要摆正心态,不要想着有什么速成的方法,或者幻想不用苦练只靠理论的学习就能熟练掌握五笔。学习五笔需要认真苦练,没有三个月的日夜操练,五笔打字是不可能熟练的。...

  • 影音先锋资源怎么搜

    影音先锋资源怎么搜

    xfplay资源搜索方法:步骤1、首先,在百度上搜索影音先锋,进行下载。或者进入上面的官网进行下载。步骤2、下载以后,点击下载好的程序,进行一步步的操作。安装就可以了。步骤3、安装好以后,最重要的就是看电影了,搜xfplay资源了...

  • adobe reader是什么

    adobe reader是什么

    Adobe Reader(也被称为Acrobat Reader)是美国Adobe公司开发的一款优秀的PDF文件阅读软件。文档的撰写者可以向任何人分发自己制作(通过Adobe Acrobat制作)的PDF文档而不用担心被恶意篡改。...

  • 周排行
  • 月排行
  • 年排行

精彩推荐