阿里云反馈的慢SQL,执行计划返回如下:Impossible WHERE noticed after reading const tables sql很简单: SELECT * FROM deposit_transaction WHERE request_Id = 'XXX' 而且该表的request_id创建了唯一索引:很明显,这个字段是保持幂等操作的,通过数据库的唯一索引实现: 每次数据落地前,都要执行该SQL查询是否记录存在,而数据库做幂等兜底: 如果request_id不存在,竟然没有走…
用EXPLAIN看MySQL的执行计划时经常会看到Impossible WHERE noticed after reading const tables这句话,意思是说MySQL通过读取"const tables",发现这个查询是不可能有结果输出的.比如对下面的表和数据: create table t (a int primary key, b int) engine = innodb; insert into t values(1, 1); insert into t values(…
原文地址:https://dev.mysql.com/doc/refman/5.7/en/explain-output.html 9.8.2 EXPLAIN Output Format The EXPLAIN statement provides information about the execution plan for a SELECT statement. EXPLAIN returns a row of information for each table used in the S…
MySql优化的一般步骤 1.通过show status 命令了解各种sql的执行效率 SHOW STATUS提供msyql服务器的状态信息 一般情况下,我们只需要了解以”Com”开头的指令 show session status like 'Com%':显示当前的连接的统计结果 show global status like 'Com%' :显示自数据库上次启动至今的统计结果 注:默认是session级别的 其中Com_XXX表示XXX语句所执行的次数. 重点注意:Com_select,Com…
接着上篇,我们继续来探究索引.这次我们主要来探究关于联合索引的使用和联合.多表查询的规范. 继续看一下数据: mysql> select * from student order by ID desc; +----+-------------+-----------+------------+ | ID | CName | ClassName | SchoolName | +----+-------------+-----------+------------+ | rockderia26| 一…
本文同时发表在https://github.com/zhangyachen/zhangyachen.github.io/issues/10 在索引中完成排序 SELECT thread_id FROM thread_5 WHERE id = 11074781 AND status = 0 AND thread_type = 0 ORDER BY post_time LIMIT 0, 50 增加在id .status.thread_type .post_time上的4字段复合索引. 原因:通过优化…
来源:db匠 yq.aliyun.com/articles/72501 sql语句的执行顺序: FROM <left_table> ON <join_condition> <join_type> JOIN <right_table> WHERE <where_condition> GROUP BY <group_by_list> HAVING <having_condition> SELECT DISTINCT <…
1.LIMIT 语句分页查询是最常用的场景之一,但也通常也是最容易出问题的地方.比如对于下面简单的语句,一般 DBA 想到的办法是在 type, name, create_time 字段上加组合索引.这样条件排序都能有效的利用到索引,性能迅速提升. SELECT * FROM operation WHERE type = 'SQLStats' AND name = 'SlowLog' ORDER BY create_time LIMIT 1000, 10; 好吧,可能90%以上的 DBA 解决…