mysql using temporary_执行计划中Using filesort,Using temporary相关语句的优化解决_MySQL
bitsCN.com
昨天听开发人员提到,相关的彩票网页当中一个页面刷新的很慢,特别是在提取数据的时候,
今天早上一到,便去找开发人员要去相关的也没进行浏览,窥探哪些数据出现了问题,开发人员
使用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
中的索引路线,避免了让数据在临时表中出现,或者在磁盘文件中排序,其实就是增大了,我们在链接
条件中我们设计索引路线的概率问题!有点声东击西的概念!哈!以下图供参考:
以此看到走了我们需要的索引路径了!bitsCN.com
本文原创发布php中文网,转载请注明出处,感谢您的尊重!
mysql using temporary_执行计划中Using filesort,Using temporary相关语句的优化解决_MySQL相关推荐
- mysql using filesort_Mysql执行计划中的Using filesort
Using filsort文档中的解释: Mysql需要额外的一次传递,以找出如何按排序顺序检索行,通过根据联接类型浏览所有行并为所有匹配where子句的行保存排序关键字和行的指针来完成排序,然后关键 ...
- mysql和oracle执行计划_mysql explain执行计划详解
原文链接:https://www.cnblogs.com/xiaoboluo768/p/5400990.html mysql> explain select t1.kprq from p ...
- MySQL Execution Plan--执行计划中的Type列
在一次的优化过程中,由于没有关注执行计划中type列,仅看key列来查看"使用到的索引",导致优化过程走了不少弯路. 以下面SQL为例: SELECT wave_no, SUM(I ...
- SQL Server 2008处理隐式数据类型转换在执行计划中的增强
关注我们获得更多内容 作者 | 邹建,资深数据库专家,精通各项 SQL Server 技术,具有丰富的管理.维护.优化能力以及业务应用经验.他一直热心于技术知识的分享.传播,持续活跃在 CSDN 和 ...
- oracle 计划中的view,为何执行计划中会出现个VIEW: VM_NWVW_1 ?
为何执行计划中会出现个VIEW: VM_NWVW_1 ? 数据库中根本没有这个OBJECT. 也不象系统自己产生的! SELECT R.CREATED_OFFICE STOCK_CODE, R.CU ...
- 执行计划中的参数解释
执行计划中的各个参数解释: 一.Recursive calls (递归调用) 1.参考:Oracle Database Reference, 10g Release 2 (10.2).pdf第916页 ...
- 执行计划中各字段各模块描述
在SQL语句的执行计划中,包含很多字段项和很多模块,其不同字段代表了不同的含义且在不同的情形下某些字段.模块显示或不显示,下 面的描述给出了执行计划中各字段的含义以及各模块的描述. 有关执行计划中各字 ...
- 浅析SQL SERVER执行计划中的各类怪相
在查看执行计划或调优过程中,执行计划里面有些现象总会让人有些疑惑不解: 1:为什么同一条SQL语句有时候会走索引查找,有时候SQL脚本又不走索引查找,反而走全表扫描? 2:同一条SQL语句,查询条件的 ...
- sql server运算符_SQL Server执行计划中SELECT运算符的主要概念
sql server运算符 One of the main responsibilities of a database administrator is query tuning and troub ...
最新文章
- WPF INotifyPropertyChanged 通过特性减少代码量
- uac2.0驱动_关闭Vista中令人讨厌的HP驱动程序UAC弹出更新检查
- nyoj 55 懒省事的小明 优先队列 multiset 还有暴力
- python jsonpath set value_Python学习:json对象快速访问(续)
- Unity3D(三)材质
- 用文本文档写的代码怎么运行?
- mongoDB 使用 mongoVue
- VS语音信号处理(5) C语言PCM格式语音存为WAV格式语音工程实例
- OMAPL多核异构通信驱动AD9833波形发生器-Notify组件
- Python的Numpy库下载及安装
- 硬盘SMART监控工具Scrutiny
- 三分钟快速理顺HTMLJSP中单、双引号用法、含义
- Java学习——Day13:IO流
- 命令行基础、目录和文件管理、教学环境介绍、
- 两个实体不是同个类同名字段赋值问题
- mxGraph绘图区域使用鼠标滚轮实现放大/缩小
- 什么是网站备案?如何查询网站是否备案?
- office(如:Word、Excel、PPT 等)文件轻松实现在线预览
- Milking Cows【转帖】
- Android——bug:not attached to a context.
热门文章
- 野火STM32F1开发板 IIC 0.96OLED 波形显示
- 腾讯研究院夹缝中生存 35万元年薪难求才(转)
- 2008年8月5号,晴,今天天气开始变热了。业精于勤,荒于嬉。—— 韩 愈《进学解》
- ubuntu 16.04 安装 openCV 3.2 --对该问题的处理CMake Error at cmake/OpenCVModule.cmake:295 (message)
- 04刘笑维-05刘洪雨-实训一
- Java 基础语法(1)- 注释、标识符、关键字
- eLife | 利用进化信息预测蛋白质界面间残基-残基相互作用
- 不权威的国产CPU发展历程
- Qt界面之侧边栏隐藏和滑出
- DVWA11_Insecure CAPTCHA(不安全的验证码)