如何在MySQL数据库中使用limit?

Posted Chihiro.511

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在MySQL数据库中使用limit?相关的知识,希望对你有一定的参考价值。

本篇文章主要介绍的是如何在mysql数据库中使用limit,相信很多朋友都不知道怎么搞吧,因此,今日小杜就分享给大家做一下参考,感兴趣的朋友不妨来看看,希望对你有所帮助。

一、limit语法

要知道,limit语法是可以支持两个参数,那就是offset和limit。前者表示偏移量,后者表示取钱limit条数据。

比如:

从上面就可以看出来,limit n等价于limit 0,n

二、性能分析

实际使用中,我们会发现,在分页的后面一些页,加载会变慢,也就是说:

语句执行较慢,那么我们首先来测试一下。

首先是在offset较小的情况下拿100条数据,数据总量为200左右,然后逐渐增大offset。

可以看到随着offset的增大,性能也越来越差。

这是为什么呢?因为limit 10000,10的语法实际上是MySQL查找到钱10010条数据,之后丢弃前面的10000行,这个步骤其实是浪费掉的。

三、优化

1、用id优化

先找到上次分页的最大ID,然后利用id商的索引来查询,类似于select * from user where id>1000000 limit 100.

这样的效率非常快,因为主键上是有索引的,但是这样是有个缺点,就是ID必须是连续的,并且查询不能有where语句,因为where语句会造成过滤数据。

2、用覆盖索引优化

MySQL的查询完全命中索引的时候,称为覆盖索引,是非常快的,因为查询只需要在索引上进行查找,之后可以直接返回,而不用再回数据表拿数据,因此我们可以先查出索引的ID,然后根据id拿数据。

耗时0.2秒

本文关于如何在MySQL数据库中使用limit的介绍就到此结束,希望大家看完以上内容有一定的收获,如果想学习更多相关知识,可以关注摩杜云行业资讯频道,更多精彩知识等着你来学习。感谢各位对摩杜云的支持!

以上是关于如何在MySQL数据库中使用limit?的主要内容,如果未能解决你的问题,请参考以下文章

如何检查mysql中是不是使用了limit? [复制]

MySQL中如何实现select top n ----Limit

如何在MySQL中使用limit方式实现分页

如何加快 LIMIT 子句中偏移量较大的 MySQL 查询?

LINQ C# 相当于 LIMIT 0..10 MySQL 与 TAKE 函数

无论怎么改mysql都显示open file limit是1024