美文网首页测者陈磊
响应慢也有可能是SQL惹的祸:Limit可能会惹祸上身

响应慢也有可能是SQL惹的祸:Limit可能会惹祸上身

作者: Criss陈磊 | 来源:发表于2019-03-06 18:37 被阅读0次

MySQL中的Limit

相信很多人都知道limit,无论是RD还是TEST,为了后续比较容易描述,我们先介绍一下limit。

很多需求在开发的时候都有返回前几条记录或者返回中间某几行记录的需求,在MYSQL数据库中很多人都会使用Limit来完成。

SELECT * FROM table  LIMIT [offset,] rows

Limit可以显示select的返回结果,有上面的语法结构我们可以看出,limit可以接受一个参数或者两个参数。其中要求offset、rows都必须是整数常量,其中第一个参数offset所指的是第一个返回记录的相对于初试记录行的偏移量,初试记录行号是0;第二个参数rows是返回记录的最大数量。

SELECT * FROM TABLE LIMIT 10,10;

//这表示返回记录11-30之间的记录

SELECT * FROM TABLE LIMIT 2;

//这表示返回前两条记录

SELECT * FROM 10,-1;

//这表示返回11行到记录最后的数据

Limit的常规使用和可能的性能问题

在很多分页的功能实现过程中,Limit比较的被使用的。例如如下SQL语句:

SELECT * FROM user WHERE sex='male' and age>20 ORDER BY id Limit 2000,10

为了能够加快查询速度,我们会在name,sex和id上加上组合索引。在小数据规模的时候,这种查询效率没有任何影响,但是随着数据规模的逐渐增大,就算加上了组合索引也会严重影响性能。

这是因为Limit 2000是从第一行记录开始数到第2000,然后开始返回第2001条数据及其后的记录,因此为了避免这类问题出现,将上述的SQL作如下修改:

SELECT * FROM user WHERE sex='male' and age>20 and id>2000 ORDER BY id Limit 10

这样就会完美的避免上述问题,但是还是建议组合索引还是有必要建立的。

相关文章

  • 响应慢也有可能是SQL惹的祸:Limit可能会惹祸上身

    MySQL中的Limit 相信很多人都知道limit,无论是RD还是TEST,为了后续比较容易描述,我们先介绍一下...

  • Mysql性能调优

    一、sql慢原因 1 、无索引,索引失效2 、锁等待3 、不恰当的sql select * 、对大数据表limit...

  • SQL 高级 01

    SQL 高级 02 SQL 高级 03 SQLite Limit 子句 SQLite 的 LIMIT 子句用于限制...

  • 2019-06-24

    一、分页查询(sql语句limit) sql语句+limit m(n-1)开始点,(m)显示条数 m:每...

  • Binlog日志格式

    查看binlog日志格式 三种格式的区别 statement 记录sql原文 limit情况下可能是unsafe的...

  • mysql 慢SQL分析

    开启慢SQL记录 为什么要开启慢SQL记录mysql在运行过程中,某些SQL可能会执行较长时间,我们通过配置一些东...

  • 慢SQL定位分析

    一、慢sql成为系统性能瓶颈 业务系统慢,肯定是体现在响应时间上,所以在性能测试中,如果发现慢我们就从响应时间上进...

  • SQL高级

    SQL SELECT TOP,LIMIT,ROWNUM SQL SELECT TOP子句 select top子句...

  • 都是耳朵惹的祸

    都是耳朵惹的祸 我的胸砰砰直跳 都是耳朵惹的祸 我的心如刀扎 都是耳朵惹的祸 我身陷冰窟 都是耳朵惹的祸 全然黑暗...

  • 工作中SQL优化实例1

    慢SQL,原表有1000W+的数据,Limit中的offset过大,光扫描就4775382行。执行时间达到了11秒...

网友评论

    本文标题:响应慢也有可能是SQL惹的祸:Limit可能会惹祸上身

    本文链接:https://www.haomeiwen.com/subject/wwbxpqtx.html