阿里云反馈的慢SQL,执行计划返回如下:Impossible WHERE noticed after reading const tables

sql很简单:

  1. SELECT * FROM deposit_transaction
  2. WHERE request_Id = 'XXX'

而且该表的request_id创建了唯一索引:很明显,这个字段是保持幂等操作的,通过数据库的唯一索引实现;

每次数据落地前,都要执行该SQL查询是否记录存在,而数据库做幂等兜底;

如果request_id不存在,竟然没有走request_id的唯一索引....

问题是:

基本99.99%的查询,肯定数据库不存在呀!

可是,mysql的innoDB引擎,主键查询或者唯一性索引查询,如果这条数据没有的话,它会全表扫描,然后得出一个结论,该数据不在表中。
对于高并发的库来说,这条数据,会让负载特别的高。
 
 
所以:
高并发系统,建议通过缓存做幂等校验,数据库唯一索引兜底!或者直接通过数据库的唯一索引兜底!
 
普通系统,并发小,数据量又不大,那就查询一把呗,IO高,可是不影响嘛!!!

Impossible WHERE noticed after reading const tables的更多相关文章

  1. MySQL特异功能之:Impossible WHERE noticed after reading const tables

    用EXPLAIN看MySQL的执行计划时经常会看到Impossible WHERE noticed after reading const tables这句话,意思是说MySQL通过读取"c ...

  2. MySQL:浅析 Impossible WHERE noticed after reading const tables

    使用 EXPLAIN 执行计划的时候,在 Extra 中偶尔会看到这样的描述: Impossible WHERE noticed after reading const tables 字面上的意思是: ...

  3. 线上MySQL慢查询现象案例--Impossible WHERE noticed after reading const tables

    前言:2012年的笔记整理而得,发布个人博客,做备忘录使用. 背景:线上慢查询日志监控,得到如下的语句:       发现:select doc_text from t_wiki_doc_text w ...

  4. mysql执行计划 const eq_ref ref range index all

    explain:查询查询性能或者需要查看使用索引状态 一.type:连接类型  最关键的一列  效率(const>eq_ref>ref>range>index>all) ...

  5. Mysql性能优化一

    下一篇:Mysql性能优化二 mysql的性能优化无法一蹴而就,必须一步一步慢慢来,从各个方面进行优化,最终性能就会有大的提升. Mysql数据库的优化技术 对mysql优化是一个综合性的技术,主要包 ...

  6. 看懂mysql执行计划--官方文档

    原文地址:https://dev.mysql.com/doc/refman/5.7/en/explain-output.html 9.8.2 EXPLAIN Output Format The EXP ...

  7. [MySQL Reference Manual] 8 优化

    8.优化 8.优化 8.1 优化概述 8.2 优化SQL语句 8.2.1 优化SELECT语句 8.2.1.1 SELECT语句的速度 8.2.1.2 WHERE子句优化 8.2.1.3 Range优 ...

  8. MYSQL的深入学习--优化步骤

    MySql优化的一般步骤 1.通过show status 命令了解各种sql的执行效率 SHOW STATUS提供msyql服务器的状态信息 一般情况下,我们只需要了解以”Com”开头的指令 show ...

  9. mysql索引的使用[下]

    接着上篇,我们继续来探究索引.这次我们主要来探究关于联合索引的使用和联合.多表查询的规范. 继续看一下数据: mysql> select * from student order by ID d ...

随机推荐

  1. EasyUI datebox 日期范围 日期关联

    jQuery EasyUI 1.4.5 html: <label>提交日期:</label> <input id="startDate" name=& ...

  2. Toolbar和Drawerlayout的基本使用

    参考文章: http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1118/2006.html http://www.codeceo.c ...

  3. vim lua对齐indent无效

    查了半天,打开命令 :filetype一看是关闭的 filetype detection:ON  plugin:ON  indent:OFF 在vimrc里打开 filetype indent on ...

  4. c# 利用反射 从json字符串 动态创建类的实例 并动态为实例成员赋值

    转自 http://hi.baidu.com/wjinbd/item/c54d43d998beb33be3108fdd 1 创建自己要用的类 class stu { string _name; int ...

  5. 云栖神侠传—阿里云数据库专家德歌告诉你PostgreSQL的那些事

    什么是云栖神侠传: 云栖社区(http://yq.aliyun.com/?utm_source=yqdg),是阿里云面向开发者群体的开放型社区.在云栖社区中,活跃着许多阿里技术大牛,他们在自己的技术领 ...

  6. 【C#】关于DateTime的一点记录 ToString("yyyy-MM-dd HH:mm:ss")

    DateTime dt = DateTime.Now; string z = dt.ToString("yyyy-MM-dd HH:mm:ss");//你直达这个是 年月日时分秒的 ...

  7. idea output 消失找不到

    今天一不小心把idea的 debug的控制台output 搞丢了, 半天找不到,原来是在这里隐藏着 Restore layout

  8. PHP 多图片上传实例demo

    upload.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:/ ...

  9. C++11标准之右值引用(rvalue reference)

    1.右值引用引入的背景 临时对象的产生和拷贝所带来的效率折损,一直是C++所为人诟病的问题.但是C++标准允许编译器对于临时对象的产生具有完全的自由度,从而发展出了Copy Elision.RVO(包 ...

  10. python 面向对象:类,作用域

    类(Class)和实例(Instance) 定义类是通过class关键字:class Student(object): pass class后面紧接着是类名,即Student接着是(object),表 ...