首页 > 数据库 > 关于 mysql 加了 limit 反而变慢的问题?

关于 mysql 加了 limit 反而变慢的问题?

时间:2023-04-21 17:58:07浏览次数:56  
标签:变慢 dateline order 索引 limit mysql where ORDER

SELECT * FROM pre_forum_post WHERE tid=6584344 AND `inv`='0' AND `uid`='6547981' ORDER BY dateline DESC limit 4

;

上面一条正常执行需要 16-20 秒.

SELECT * FROM pre_forum_postWHERE tid=6584344 AND `inv`='0' AND `uid`='6547981' ORDER BY dateline DESC ;

下面的只需要 0.2 秒左右。请大神帮帮忙.

 

 

 

走的索引不一样,  第一个 key 是 dateline,  第二个是 authorid,  根据业务建议优化一下索引. 

WHERE + ORDER BY的索引优化,形如:
SELECT [column1],[column2],…. FROM [TABLE] WHERE [columnX] = [value] ORDER BY [sort];
建立一个联合索引(columnX,sort)来实现order by 优化。

 

回复 @ffvsnn520 : Extra信息不完整, 看看有没有 filesort.  


mysql对语句优化的时候, 选择了不同的索引,  因为你没有 联合索引,所以 当 where 后面走了索引的时候(比如你说的主键), order by 则不会走索引, 如果你的结果集很大, filesort 也会很漫长...


如果mysql走了 order by 索引,那么where就不会走索引,如果你的sql在查询上需要花大量时间,而结果集filesort排序很快的话,那么没走where索引的查询就会非常慢...


所以建议就是 尽量让 where 和 order by 都走索引... 

评论 (3) 引用此答案 举报   转自:https://www.oschina.net/question/1269003_153551

 

标签:变慢,dateline,order,索引,limit,mysql,where,ORDER
From: https://www.cnblogs.com/tiancai/p/17341248.html

相关文章

  • MYSQL事件
    --创建MYSQL事件DELIMITER$CREATEEVENTIFNOTEXISTSevent_deldataONSCHEDULEEVERY1MINUTESTARTS'2023-04-2100:00:00'ONCOMPLETIONPRESERVECOMMENT'测试'DOBEGIN--Droptabledroptableifexiststmp_czc;--......
  • MySQL:分页
    SELECT*FROMst_typeLIMIT5前几条数据 SELECT*FROMst_typeLIMIT1,2第几条数据后的多少条数据  第几页 一页多少条 查询第1条到第10条的数据的sql是:select*fromtablelimit0,10;  ->对应我们的需求就是查询第一页的数据:select*fromtablelimit(1-1)*1......
  • 开心档之MySQL ALTER命令
    MySQLALTER命令当我们需要修改数据表名或者修改数据表字段时,就需要使用到MySQLALTER命令。开始本章教程前让我们先创建一张表,表名为:testalter_tbl。root@host#mysql-uroot-ppassword;Enterpassword:*******mysql>useRUNOOB;Databasechangedmysql>createtable......
  • 开心档之MySQL 管理
    MySQL管理启动及关闭MySQL服务器Windows系统下在Windows系统下,打开命令窗口(cmd),进入MySQL安装目录的bin目录。启动:cdc:/mysql/binmysqld--console关闭:cdc:/mysql/binmysqladmin-urootshutdownLinux系统下首先,我们需要通过以下命令来检查MySQL服务......
  • mySql获取表结构语句
    获取完整表结构:其中,where语句table_name字段的值替换为你的表名,table_schema字段的值替换为你的数据库名。select*frominformation_schema.`COLUMNS`wheretable_name='records'andtable_schema='zc_archives' 获取表结构关键信息:selectordinal_position序号,colum......
  • MySQL Shell 使用报错 SyntaxError: Unexpected identifier
    文章目录一、问题报错二、解决办法一、问题报错MySQLShell8.0.23Copyright(c)2016,2021,Oracleand/oritsaffiliates.OracleisaregisteredtrademarkofOracleCorporationand/oritsaffiliates.Othernamesmaybetrademarksoftheirrespectiveowners.T......
  • mysql generate 1000000 rows with random data
    CREATETABLE`data`(`id`bigint(20)NOTNULLAUTO_INCREMENT,`datetime`timestampNULLDEFAULTCURRENT_TIMESTAMP,`channel`int(11)DEFAULTNULL,`value`floatDEFAULTNULL,......
  • 【汇智学堂】docker+springboot+mysql之二(springboot打包发送至Ubuntu dockermysql目
    IDEA:DockerfileContent:FROMjava:8VOLUME/tmpADDhellodocker-0.0.1-SNAPSHOT.jar/app.jarRUNsh-c'touch/app.jar'ENVJAVA_OPTS=""ENTRYPOINT["sh","-c","java$JAVA_OPTS-Djava.security.egd=file:/dev/.......
  • 【汇智学堂】docker+springboot+mysql之三(制作镜像并运行项目)
    Docker镜像仓库地址:https://hub.docker.com由于有墙,所以配置国内镜像,我们使用阿里云的镜像地址https://dev.aliyun.com/search…运行命令制作镜像:dockerbuild-t[容器名].注意:后面有个点,表示当前目录下//镜像名随意,注意最后有一个点发现没有mysql:查看所有发现msyql:5.......
  • 基于Jsp和MySQL实现的云音乐平台
    访问【WRITE-BUG数字空间】_[内附完整源码和文档]一、系统使用说明1.1配置开发环境:EclipseJavaEEIDEforWebDevelopers4.3.2开发语言:Java1.8MVC框架:Spring4.3.3web服务器:Tomcat开发系统:OSX/LINUX数据库:MySQL1.2相关路径controller:CloudMusic/src/controllermodel:CloudMus......