| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> MySql-G-性能优化(四) -> 正文阅读 |
|
[大数据]MySql-G-性能优化(四) |
一、性能分析 ??????MySql Query Optimizer MySql常见瓶颈
Explain(执行计划)
1)?id -> select查询的序列号,包含一组数字,表示查询中执行select子句或操作表的顺序 三种情况:
????????
->如下图所示,执行顺序是:? t3->t1->t2
???????? ?2)?select_type -->查询的类型,主要是用于区别普通查询、联合查询、子查询等的复杂查询;
3) type -> 访问类型,从最好到最差依次是
?一般来说,得保证查询至少达到range级别,最好能达到ref system
?const
eq_ref
?ref
?range
index
?ALL
4)? possible_keys
5)key
?6)key_len
?7)ref
8)rows
?9)Extra
*Using filesort (文件内排序,出现这个说明mysql自己重新做了数据排序)
?-> 上图,使用了Using filesort 文件内排序,说明我们建的复合索引,排序没有用到索引,下图,可以发现?Extra: Using where; Using index 没有使用 Using filesort 说明排序是按照索引排序来的故效率要高于上图 *Using temporary
-> Using temporary 使用了临时表;Using filesort? 使用了文件内排序,这种sql效率是极低的 ->?下段sql,分组排序按照我们建索引的顺序来,发现mysql没有再使用临时表与文件内排序 总结:建立复合索引,c1、c2、c3,分组排序时,尽量按照复合索引的顺序进行查询,可以避免文件内排序和使用临时表 *Using index
->?如果同时出现using where,表明索引被用来执行索引键值的查找 ?->?如果没有同时出现using where,表明索引用来读取数据而非执行查找动作 注意:
Using where
Using join buffer
impossible where
select tables optimized away
?distinct
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 4:55:56- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |