龙空技术网

干货!MySQL分页Limit的优化过程实战

波波聊运维 1161

前言:

如今姐妹们对“mysql分页优化”大约比较关怀,你们都需要知道一些“mysql分页优化”的相关文章。那么小编同时在网摘上收集了一些对于“mysql分页优化””的相关资讯,希望朋友们能喜欢,同学们一起来学习一下吧!

在mysql中进行分页查询时,一般会使用limit查询,下面这篇文章主要给大家介绍了关于MySQL分页Limit优化的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。

在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能。

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

LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。初始记录行的偏移量是 0(而不是 1): 为了与 PostgreSQL 兼容,MySQL 也支持句法: LIMIT # OFFSET #。

所以通常在查询数据的时候,我们都会用到limit分页,因为这样避免了全表查询,会提高查询效率。但是在一个表的数据量多了之后,分页查询会明细的变慢,下面来一起看看详细的介绍吧。

MySQL分页Limit优化

创建测试表card 2000万数据

-首先测试前1000行查询速度

-测试100万之后的查询

-测试1000万之后的查询

可以看到越到后面查询效率会越低。因为在查询100万之后的数据的时候,mysql会首先查询100万零10条数据,然后截取后面的十条数据。这些就造成的性能的降低。

那么怎么去避免这个扫描100万条数据呢。我们可以明确的知道,100万之后的主键是大于100万的。所以我们可以将sql改写,让其用到索引,降低扫描的行数

这样就可以很大的提高查询效率。

后面小编会分享更多这方面的干货,感兴趣的朋友走一波关注哩~

标签: #mysql分页优化