首页 > 数据库 >Mysql:分页查询优化

Mysql:分页查询优化

时间:2023-01-17 11:57:33浏览次数:41  
标签:10 分页 查询 limit user Mysql id select

分页查询优化

最简单的select分页是这样的:

select * from user limit 2000,10

mysql实际上会默认 order by id asc,然后再进行limit。这个有个问题是先对user表的所有数据排好序了再进行limit,其他页的数据不是自己想要的但也排序浪费时间

因此可以改写成下面:

select * from user where id > 2000 limit 10

此方式,是利用了id自增的方式,过滤了前2000条数据,然后直接取10条数据,但有很大的局限性:

  1. id必须是数字自增
  2. 业务上要求是对id(创建时间)为升序

因此可以再改下:

select *
from user u
inner join (select id from user order by id limit 2000,10) u1 on u.id = u1.id

此方式是利用上了id的索引,提升需要数据的查询速度。 弥补了上种方式的两个局限性,id不需要自增,排序字段是可以任意的,只要加索引就行。

局限性:

  1. 就是得自己手写分页SQL,平时分页都是借助分页工具。分页工具都是查完全部数据后再进行limit的

标签:10,分页,查询,limit,user,Mysql,id,select
From: https://www.cnblogs.com/ibcdwx/p/17057489.html

相关文章

  • MySQL安装-Linux版
    MySQL8.0.26-Linux版安装1.准备一台Linux服务器云服务器或者虚拟机都可以;Linux的版本为CentOS7;2.下载Linux版MySQL安装包https://downloads.mysql.com/archives/......
  • MySQL卸载-Linux版
    MySQL卸载-Linux版停止MySQL服务systemctlstopmysqld查询MySQL的安装文件rpm-qa|grep-imysql卸载上述查询出来的所有的MySQL安装包rpm-emysql-community......
  • linux中用命令导出、导入mysql数据库表
    一、导出数据1.使用场景:在没有数据库可视化工具的情况下备份导出数据库。命令如下:mysqldump-u用户名-p数据库名>数据库名.sqlmysqldump-uroot-pcity>city.sq......
  • MySQL的存储引擎
    MySQL体系结构连接层最上层是一些客户端和链接服务,包含本地sock通信和大多数基于客户端/服务端工具实现的类似于TCP/IP的通信。主要完成一些类似于连接处理、授权认证......
  • mysql定时备份并删除30天前的备份
    backupmysqldatariqi=$(date+%Y-%m-%d)mysqldump-h50.100.13.2-uroot-ptenx#cloud999-P3306-A--lock-tables=0|gzip>/opt/mysql-data-backup/all-data-$ri......
  • MySQL必知必会第十一章-使用数据处理函数
    使用数据处理函数函数与其他大多数计算机语言一样,SQL支持利用函数来处理数据。函数一般是在数据上执行的,它给数据的转换和处理提供了方便。注意:函数没有SQL的可移植性......
  • windows安装mysql压缩包
    1.解压压缩包2.在解压好的根目录下新建my.ini文件,内容可如下:[mysqld];设置3306端口port=3306;设置mysql的安装目录basedir=D:/wamp64/bin/mysql/mysql8.0.28;设置mysql......
  • 10.Requests【接口请求】requests模拟QuertString查询字符串传参
    一、前言无论是get,还是post请求,我们在模拟接口请求中往往会遇到url中包含形如?name=xiaoming&age=18这种的参数,这种参数是通过url传递到服务器的,像这种参数怎么通过reque......
  • angular 下 nztable分页设置
    网上搜了一圈,竟然没有一篇正经讲分页配置的,好多都是自己做个控件替代原生的。然后我翻了一遍底层ts试了下,发现自带的配置其实并不复杂。 nzItemRender:TemplateRef<Pag......
  • mysql 时间维度 以10分钟为粒度
    1.10分钟为粒度分组SELECTconcat(left(date_format(create_time,'%Y-%m-%d%H:%i'),15),'0')ASgroupTime,count(*)FROMai_t_taskWHEREcreat......