龙空技术网

MySQL中limit分页查询性能问题分析

软件架构 1485

前言:

现时兄弟们对“mysqllimit性能”大体比较重视,兄弟们都想要了解一些“mysqllimit性能”的相关文章。那么小编在网摘上网罗了一些有关“mysqllimit性能””的相关知识,希望看官们能喜欢,看官们一起来了解一下吧!

MySQL Limit 语法格式:

SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset

分页查询时,我们会在 LIMIT 后面传两个参数,一个是偏移量(offset),一个是获取的条数(limit)。当偏移量很小时,查询速度很快,但是当 offset 很大时,查询速度就会变慢。

测试表:employees_nopartition 数据记录合计:1009999 主键:id

执行如下SQL:

select * from employees_nopartition order by id limit 1, 10;

select * from employees_nopartition order by id limit 10, 10;

select * from employees_nopartition order by id limit 100, 10;

select * from employees_nopartition order by id limit 1000, 10;

select * from employees_nopartition order by id limit 10000, 10;

select * from employees_nopartition order by id limit 100000, 10;

select * from employees_nopartition order by id limit 1000000, 10;

执行时间(毫秒 ms):

可以看到,随着偏移量(offset)的增加,查询时间变得越长。

下面通过SQL 子查询获取相同的结果,短于上面执行的时间。

SELECT * FROM employees_nopartition

WHERE id >=(SELECT ID FROM employees_nopartition ORDER BY id LIMIT 1000000,1)

LIMIT 10;

标签: #mysqllimit性能