SQL優化工具

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_SQLalter 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
測試

相關文章
相關標籤/搜索