SQL优化工具
SQL优化工具
什么是索引?
- 打个比方,我们在使用MySQL用作查询的时候就好比查字典,索引就好比字典的偏旁部首页。如果没有索引我们查询一个文字就需要一页页的翻,显然这种方式效率很低。如果我们对某一字段加入了索引,就可以通过偏旁部首页查找这个文字,让查询变得更加高效。
相关链接
MySQL 索引 : http://www.runoob.com/mysql/mysql-index.html
MySQL 索引优化 : http://www.runoob.com/w3cnote/mysql-index.html
Mysql explain用法和性能分析 : http://blog.csdn.net/u012410733/article/details/66472157
效果展示
下载测试sql文件 链接:http://pan.baidu.com/s/1qY2WgNE 密码:zhy3
执行sql语句(耗时34秒左右[linux系统下的测试])
SELECT
ca_id,
sub_id,
ca_number,
sub_number
FROM
tbl_category ca
LEFT JOIN tbl_subcategory sub ON ca.ca_number = sub.sub_number

- 使用SQL优化工具
[root@localhost /]# /usr/sbin/sqladvisor -f /etc/sql.cnf -q "SELECT ca_id, sub_id, ca_number, sub_number FROM tbl_category ca LEFT JOIN tbl_subcategory sub ON ca.ca_number = sub.sub_number" -v 1
2017-08-15 19:27:43 3494 [Note] 第1步: 对SQL解析优化之后得到的SQL:select `ca_id` AS `ca_id`,`sub_id` AS `sub_id`,`ca_number` AS `ca_number`,`sub_number` AS `sub_number` from (`test`.`tbl_category` `ca` left join `test`.`tbl_subcategory` `sub` on((`ca`.`ca_number` = `sub`.`sub_number`)))
2017-08-15 19:27:43 3494 [Note] 第2步:开始解析join on条件:ca.ca_number=sub.sub_number
2017-08-15 19:27:43 3494 [Note] 第3步:开始选择驱动表,一共有1个候选驱动表
2017-08-15 19:27:43 3494 [Note] explain select * from tbl_category
2017-08-15 19:27:43 3494 [Note] 第4步:候选驱动表tbl_category的结果集行数为:29521
2017-08-15 19:27:43 3494 [Note] 第5步:选择表tbl_category为驱动表
2017-08-15 19:27:43 3494 [Note] 第6步:表tbl_category 的SQL太逆天,没有优化建议
2017-08-15 19:27:43 3494 [Note] 第7步:开始验证 字段sub_number是不是主键。表名:tbl_subcategory
2017-08-15 19:27:43 3494 [Note] show index from tbl_subcategory where Key_name = 'PRIMARY' and Column_name ='sub_number' and Seq_in_index = 1
2017-08-15 19:27:43 3494 [Note] 第8步:字段sub_number不是主键。表名:tbl_subcategory
2017-08-15 19:27:43 3494 [Note] 第9步:开始验证 字段sub_number是不是主键。表名:tbl_subcategory
2017-08-15 19:27:43 3494 [Note] show index from tbl_subcategory where Key_name = 'PRIMARY' and Column_name ='sub_number' and Seq_in_index = 1
2017-08-15 19:27:43 3494 [Note] 第10步:字段sub_number不是主键。表名:tbl_subcategory
2017-08-15 19:27:43 3494 [Note] 第11步:开始验证表中是否已存在相关索引。表名:tbl_subcategory, 字段名:sub_number, 在索引中的位置:1
2017-08-15 19:27:43 3494 [Note] show index from tbl_subcategory where Column_name ='sub_number' and Seq_in_index =1
2017-08-15 19:27:43 3494 [Note] 第12步:开始输出表tbl_subcategory索引优化建议:
2017-08-15 19:27:43 3494 [Note] Create_Index_SQL:alter table tbl_subcategory add index idx_sub_number(sub_number)
2017-08-15 19:27:43 3494 [Note] 第13步: 优化结束!
2017-08-15 19:27:43 3494 [Note] 第12步:开始输出表tbl_subcategory索引优化建议:
2017-08-15 19:27:43 3494 [Note] Create_Index_SQL:alter table tbl_subcategory add index idx_sub_number(sub_number)
- 执行工具的索引优化建议
alter table tbl_subcategory add index idx_sub_number(sub_number)
- 执行sql语句(耗时0.05秒左右[linux系统下的测试])
SELECT
ca_id,
sub_id,
ca_number,
sub_number
FROM
tbl_category ca
LEFT JOIN tbl_subcategory sub ON ca.ca_number = sub.sub_number

详细链接 : http://wangweihong.com
SQL优化工具的更多相关文章
- Oracle 10G强大的SQL优化工具:SQL Tuning Advisor
p { margin-bottom: 0.25cm; direction: ltr; color: rgb(0, 0, 0); line-height: 120%; orphans: 2; widow ...
- SQL优化工具SQLAdvisor使用
一.简介在数据库运维过程中,优化SQL是业务团队与DBA团队的日常任务.例行SQL优化,不仅可以提升程序性能,还能够降低线上故障的概率. 目前常用的SQL优化方式包括但不限于:业务层优化.SQL逻辑优 ...
- 美团SQL优化工具SQLAdvisor
介绍 在数据库运维过程中,优化 SQL 是 DBA 团队的日常任务.例行 SQL 优化,不仅可以提升程序性能,还能够降低线上故障的概率. 目前常用的 SQL 优化方式包括但不限于:业务层优化.SQL逻 ...
- 美团开源 SQL 优化工具 SQLAdvisor
https://www.oschina.net/news/82725/sqladvisor-opensource https://github.com/Meituan-Dianping/SQLAdvi ...
- sql优化工具--美团SQLAdvisor
美团点评SQL优化工具SQLAdvisor开源 介绍 在数据库运维过程中,优化 SQL 是 DBA 团队的日常任务.例行 SQL 优化,不仅可以提升程序性能,还能够降低线上故障的概率. 目前常用的 S ...
- 【SQL优化】SQL优化工具
SQLAdvisor 是由美团点评公司北京DBA团队开发维护的 SQL 优化工具:输入SQL,输出索引优化建议. 它基于 MySQL 原生词法解析,再结合 SQL 中的 where 条件以及字段选择度 ...
- SQL优化工具SQLAdvisor使用(转)
一.简介 在数据库运维过程中,优化SQL是业务团队与DBA团队的日常任务.例行SQL优化,不仅可以提升程序性能,还能够降低线上故障的概率. 目前常用的SQL优化方式包括但不限于:业务层优化.SQL逻辑 ...
- 美团点评SQL优化工具SQLAdvisor开源快捷部署
美团点评SQL优化工具SQLAdvisor开源快捷部署 git clone https://github.com/Meituan-Dianping/SQLAdvisor.gityum install ...
- 智能SQL优化工具--SQL Optimizer for SQL Server(帮助提升数据库应用程序性能,最大程度地自动优化你的SQL语句 )
SQL Optimizer for SQL Server 帮助提升数据库应用程序性能,最大程度地自动优化你的SQL语句 SQL Optimizer for SQL Server 让 SQL Serve ...
随机推荐
- iOS与web交互的那些事
一转眼又是大半年过去了,除了上架了一款新应用外,也没什么进步.所以最近琢磨着搞点事情,不然我那本Java教程都快看完了. 做为一名iOS高(la)阶(ji)法师,几乎所有的任务里,都会出现web这个从 ...
- 百度百科Tooltip的实现--原生js的应用
我们在浏览百度百科时,不难发现提示框的存在,如下图: 实现如下: 1.HTML代码部分 <!DOCTYPE html><html lang="en">< ...
- 一份关于webpack2和模块打包的新手指南
webpack已成为现代Web开发中最重要的工具之一.它是一个用于JavaScript的模块打包工具,但是它也可以转换所有的前端资源,例如HTML和CSS,甚至是图片.它可以让你更好地控制应用程序所产 ...
- js判断空值
{ "mDataProp": 'CreationTime', 'mRender': function (date) { if (!date && typeof (d ...
- python--DenyHttp项目(2)--ACM监考客户端1.0版
修复了: 360搜索可以使用的漏洞 更新版本,上一版本复制的Hosts文件保留的漏洞 #coding:gbk import os import sys from subprocess import * ...
- hdu--1104--Remainder(简单的bfs)
Remainder Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total S ...
- js判断移动终端(手机浏览器)
方法1: <script type="text/javascript"> var browser = { versions: f ...
- Python 协程总结
Python 协程总结 理解 协程,又称为微线程,看上去像是子程序,但是它和子程序又不太一样,它在执行的过程中,可以在中断当前的子程序后去执行别的子程序,再返回来执行之前的子程序,但是它的相关信息还是 ...
- java多线程系列(七)---Callable、Future和FutureTask
Callable.Future和FutureTask 前言:如有不正确的地方,还望指正. 目录 认识cpu.核心与线程 java多线程系列(一)之java多线程技能 java多线程系列(二)之对象变量 ...
- Weex的原生开发
weex概念与特性 最形象的理解就是类似react native. Weex几大特点: 1.帮助你构建原生应用 与 Web App.HTML5 App 或 hybrid App 不同,您可以使用 We ...