昨天听开发人员提到,相关的彩票网页当中一个页面刷新的很慢,特别是在提取数据的时候,今天早上一到,便去找开发人员要去相关的也没进行浏览,窥探哪些数据出现了问题,开发人员使用PHP开发,所以我用IE很容易就可以窥探到哪些sql执行的很慢,比如下;

这个图上列出了,也没中取sql语句的相关执行时间预估比例,以此我可以探查到大概哪些语句会影响到我们的业务系统!首先看到了有个500,200毫秒的问题,熟话说,枪打出头鸟,哈哈,优化也一样,先把大的问题解决了,在来收拾小的问题(小的问题,也有可能受到大问题的干预造成),于是我便把该语句找出来;如下;

SELECT 

  a.user_name as username, 

  a.order_date as ordertime, 

  a.bonus_value as bonus, 

  cm.name_1 as lname 

FROM 

  lot_sellform AS a 

INNER JOIN 

  code_mst AS cm ON a.lottery_id = cm.cd AND a.lottery_type = cm.lot_type

WHERE 

  a.bonus_value > 0 

ORDER BY 

  a.order_date DESC 

limit 

  10

基本上改弄的索引信息都弄到了,但是我在页面中却看到了这样的情况;如图;

看到type类型基本都走了索引,而且extra列内还有using temporary,using filesort,他们用到了临时表和在文件内进行了排序,才返回出来,这肯定不是按照我们原先设计的最优路线来走的,而且相关的索引路线都没走上,这里我有查了相关的资料,在官网上,看到如下内容;(我用蓝色来表名相关的信息)

在某些情况中,MySQL可以使用一个索引来满足ORDER
BY子句,而不需要额外的排序。

即使ORDER BY不确切匹配索引,只要WHERE子句中的所有未使用的索引部分和所有额外的ORDER
BY 列为常数,就可以使用索引。下面的查询使用索引来解决ORDER BY部分:

SELECT * FROM t1

ORDER BY key_part1,key_part2,...
;

SELECT * FROM t1

WHERE key_part1=constant

ORDER BY key_part2;

SELECT * FROM t1

ORDER BY key_part1 DESC, key_part2 DESC;

SELECT * FROM t1

WHERE key_part1=1

ORDER BY key_part1 DESC, key_part2 DESC;

这几句话严重勾起了我的兴趣,爱好!哈,在排序中,去查看没有进行索引,而且我在日期列上添加了btree索引了!怎么会没走呢?以下是图信息;

从上图可以看出,排序仍然是在临时表,和文件中进行了,而且type还是ALL比较耗时的操作,这里我又会想起前面官网中提及到的,key_part1,key_part2这两列,在where语句中,和order by中出现的比率这么频繁,而且上面说,如果where语句中只要为啥用索引语句列的部分,和所有order by列的数据如果为常数,可以使用索引路线来走,那如果我对两者来进行彼此的绑定了,比如;让其来做个组合索引!首先where条件中bonus_value的值,我们取得是常数,而且在进行排序的时候,我们选择的是order_date日期的列值,如果彼此来进行绑定组合,sql在选择路线的窥探中首先会尝试,组合索引中位于第一列的数列,进行handle的锁定,遍历到数值后会继续留住该handle的位于LRU列表头中,接着继续进行数值的排序遍历结果集合,直到handle列被挤出index维护的元头之外!其实这个不是让其走我们的bonus_value,order_date索引路径,而且让其走到我们前面INNER
JOIN 中的索引路线,避免了让数据在临时表中出现,或者在磁盘文件中排序,其实就是增大了,我们在链接条件中我们设计索引路线的概率问题!有点声东击西的概念!哈!以下图供参考:

以此看到走了我们需要的索引路径了!

执行计划中Using filesort,Using temporary相关语句的优化解决的更多相关文章

  1. MySQL 执行计划中Extra(Using where,Using index,Using index condition,Using index,Using where)的浅析

      关于如何理解MySQL执行计划中Extra列的Using where.Using Index.Using index condition,Using index,Using where这四者的区别 ...

  2. [转载] EXPLAIN执行计划中要重点关注哪些要素

    原文: https://mp.weixin.qq.com/s?__biz=MjM5NzAzMTY4NQ==&mid=400738936&idx=1&sn=2910b4119b9 ...

  3. EXPLAIN执行计划中要重点关注哪些要素(叶金荣)

    原文:http://mp.weixin.qq.com/s/CDKN_nPcIjzA_U5-xwAE5w 导读 EXPLAIN的结果中,有哪些关键信息值得注意呢? MySQL的EXPLAIN当然和ORA ...

  4. EXPLAIN执行计划中要重点关注哪些要素

    MySQL的EXPLAIN当然和ORACLE的没法比,不过我们从它输出的结果中,也可以得到很多有用的信息. 总的来说,我们只需要关注结果中的几列: 列名 备注 type 本次查询表联接类型,从这里可以 ...

  5. EXPLAIN执行计划中要重点关注哪些要素(转)

    EXPLAIN的结果中,有哪些关键信息值得注意呢? MySQL的EXPLAIN当然和ORACLE的没法比,不过我们从它输出的结果中,也可以得到很多有用的信息. 总的来说,我们只需要关注结果中的几列: ...

  6. 浅析SQL SERVER执行计划中的各类怪相

    在查看执行计划或调优过程中,执行计划里面有些现象总会让人有些疑惑不解: 1:为什么同一条SQL语句有时候会走索引查找,有时候SQL脚本又不走索引查找,反而走全表扫描? 2:同一条SQL语句,查询条件的 ...

  7. SQL Server 执行计划中的扫描方式举例说明

    SQL Server 执行计划中的扫描方式举例说明 原文地址:http://www.cnblogs.com/zihunqingxin/p/3201155.html 1.执行计划使用方式 选中需要执行的 ...

  8. 执行计划中常见index访问方式(转)

    近期有朋友对于单个表上的index各种情况比较模糊,这里对于单个表上,单个index出现的大多数情况进行了总结性测试,给出了测试结果,至于为什么出现这样的试验结果未做过多解释,给读者留下思考的空间.本 ...

  9. 解读EXPLAIN执行计划中的key_len(转)

    原文:http://imysql.com/2015/10/20/mysql-faq-key-len-in-explain.shtml 导读 EXPLAIN中的key_len一列表示什么意思,该如何解读 ...

随机推荐

  1. linux下获取按键响应事件【转】

    本文转载自:https://my.oschina.net/u/157503/blog/91548 1.问题 通过一个死循环将读取键盘对应的设备文件将触发键盘事件在屏幕上打印出来,按esc退出程序 代码 ...

  2. B1076 [SCOI2008]奖励关 状压dp&&期望dp

    这个题的n<15,一看就是状压dp.但是状态不是很好想.f[][]存i关的状态j. 这个题另一个关键思想在于倒推,我一开始想的是正推,但是只能记忆化了. 题干: 题目描述 你正在玩你最喜欢的电子 ...

  3. [HDU4689]Derangement

    https://zybuluo.com/ysner/note/1232641 题面 给出\(b_1,b_2,...,b_n\in\{−1,1\}\),求满足\((p_i−i)*b_i<0\)的\ ...

  4. Java-java-com-util-common-service:ServiceException.java

    ylbtech-Java-java-com-util-common-service:ServiceException.java 1.返回顶部 1. package com.shineyoo.manag ...

  5. CAS配置(3)之restful-api接入接口

    第一步,cas服务端对api接口支持 在cas-server-webapp下 pom.xml添加如下依赖 <dependency> <groupId>org.jasig.cas ...

  6. 项目平台统一(前后端IDE、代码风格)

    项目平台统一(前后端IDE.代码风格) 记录人:娄雨禛 前端:Webstorm(HTML+CSS+JavaScript) 后端:IntelliJ IDEA(Java) 代码风格:Java风格代码 代码 ...

  7. js-常见简单的js判断方法(暂不参考正则)

    1: 2: 3: 4: 5: 6: 7:

  8. redis 主从复制 redis 探索

    http://blog.csdn.net/column/details/12804.html

  9. PCL:描述三维离散点的ROPS特征(Code)

    前言: 三维点云为三维欧式空间点的集合.对点云的形状描述若使用局部特征,则可分为两种:固定世界坐标系的局部描述和寻找局部主方向的局部描述,ROPS特征为寻找局部主方向的特征描述. 1.寻找主方向(对X ...

  10. alert弹出框 弹出窗口 ----sweetAlert

    推荐一款好用的alert,下面地址是demo,很直观的看到效果,wap可以使用 http://www.dglives.com/demo/sweetalert-master/example/   < ...