SQL优化工具

什么是索引?

  • 打个比方,我们在使用MySQL用作查询的时候就好比查字典,索引就好比字典的偏旁部首页。如果没有索引我们查询一个文字就需要一页页的翻,显然这种方式效率很低。如果我们对某一字段加入了索引,就可以通过偏旁部首页查找这个文字,让查询变得更加高效。

相关链接

效果展示

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

最新文章

  1. solr使用语法笔记
  2. oracle 表迁移方法 (一)
  3. 28335timer
  4. mips-linux-gnu-gcc
  5. 优秀js插件收藏
  6. 一道看似简单的sql需求(转)
  7. Android Property Animation 物业动画
  8. webpack教程(二)——webpack.config.js文件
  9. QT中正则表达式的简单说明
  10. 2017 5 31 php面向过程 面向对象1
  11. ruby-super用法
  12. Java LinqCollection 仿Linq的list常用函数
  13. PAT 1092 To Buy or Not to Buy
  14. Haproxy基础知识 -运维小结
  15. MySQL8.0安装连接Navicat的坑
  16. Python3.6下的Requests登录及利用Cookies登录
  17. -bash: start-all.sh: 未找到命令
  18. 二叉树中的最大路径和 · Binary Tree Maximum Path Sum
  19. PreferenceScreen的应用
  20. CodeForces 550A Two Substrings(模拟)

热门文章

  1. 【分支结构】Jcc 的一些助记
  2. idea项目上传到码云
  3. 花了一年时间开发出来的EZNest 自动套料软件
  4. Java之线程,常用方法,线程同步,死锁
  5. [补档]暑假集训D1总结
  6. RocketMQ入门
  7. 分享一款好用的PHP下ID混淆插件
  8. 重定向URL
  9. android 学习 ListView使用补充
  10. linux守护进程、SIGHUP与nohup详解