当前位置:首页 » 数据仓库 » 数据库分页limit
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

数据库分页limit

发布时间: 2023-02-08 03:54:07

⑴ Mysql分页查询LIMIT

SELECT * FROM table LIMIT [offset,] rows;
offset :偏移,从 offset 条之后开始选择数据,如果 offset 不填,则 offset 为0。
rows :从偏移后开始,选择 rows 条数据。
特点:左开右闭,即选取 (offset,offset+rows] 的数据。

SELECT * FROM table LIMIT 5;
SELECT * FROM table LIMIT 0,5;
区间:(0,5]
offset=0
rows=5-0=5

SELECT * FROM table LIMIT 2,4;
区间:(1,5]
offset=1
rows=5-1=4

SELECT * FROM table LIMIT n,m;
区间:(n-1,m]
offset=n-1
rows=m-n+1

⑵ Mysql使用limit深度分页优化

mysql使用select * limit offset, rows分页在深度分页的情况下。性能急剧下降。

limit用于数据的分页查询,当然也会用于数据的截取,下面是limit的用法:

1. 模仿网络、谷歌方案(前端业务控制)

类似于分段。我们给每次只能翻100页、超过一百页的需要重新加载后面的100页。这样就解决了每次加载数量数据大 速度慢的问题了

2. 记录每次取出的最大id, 然后where id > 最大id

select * from table_name Where id > 最大id limit 10000, 10;
这种方法适用于:除了主键ID等离散型字段外,也适用连续型字段datetime等
最大id由前端分页pageNum和pageIndex计算出来。

3. IN获取id

4. join方式 + 覆盖索引(推荐)

如果对于有where 条件,又想走索引用limit的,必须设计一个索引,将where 放第一位,limit用到的主键放第2位,而且只能select 主键!

1. jdbcpagingReader使用方式

2. db索引分区器使用方式

入参1: 表名 如test_table

入参2: 排序索引字段 可以是主键,也可以是其他索引。需要保证是唯一索引即可。如:id

入参3: 主键可手动传入,也可以根据表名计算出来:现在只支持单列主键的。 如:id

入参4: 具体表 要分多少块。如:4

⑶ 【SQL语句】-分页查询limit的用法

select * from table limit 索引 , 查询的数据个数

select grade from Student limit 5,1。表示:从第6行或者第6页开始查询(包括第6行),往后查一行数据,结果是 6.

 select * from Customer limit 10 ;--检索前10行数据,显示1-10条数据

=select * from Customer  limit  0,10 --0可以省略

select * from Customer limit 5,10 ;--检索从第6行开始向后加10条数据,共显示id为6,7....15

查询从某一行开始到结尾的全部数据,可以在第二个参数中设置一个很大的值

如:查询从第3行开始的后面全部数据

select * from table limit 2,99999999999999999999999999;

扩展:

limit典型的应用场景就是实现分页查询

已知:每页显示m条数据,求:显示第n页的数据

select * from table limit  (n-1)m,m

⑷ mysql使用limit分页优化方案

准备数据是20000000条数据

在分页场景下,使用limit start end,我们分别看下从10000, 100000, 1000000开始分页的执行时间(每页取10条),如下图

当start较小时,查询没有性能问题,但是如上图查询时间所示,随着start增大,查询消耗时间也在递增,在start=10000000时,分页竟然消耗了2秒多,这是不能忍受的。

由此引出对limit分页的优化,首先来explain该语句,看到查询没有使用到任何的索引,进行的是全表扫描,假如limit分页用到了索引是不是会快很多呢!

explain分析一下,第一行是select * from user_innodb形成的临时表使用的是全表扫描,第二行是 (SELECT id FROM user_innodb LIMIT 10000000, 10)形成的,使用的是eq_ref,第三行是全表扫描a和bjoin形成的派生表,使用到的是index,所以速度也会快很多

⑸ mysql语句分页limit什么意思

主要是取数据条数用的
比如取前几条或者中间某几条数据

举两个例子吧
limit 10 (limit 0,10的缩写)这个表示取前十条
limit 2,10 从第三条开始往后取十条,因为起始数字是从0算起的