1. 程式人生 > 其它 >快速定位mysql是否走索引

快速定位mysql是否走索引

技術標籤:mysqlmysql索引sql資料庫

快速定位mysql是否走索引

文章目錄

問題背景:當我們查詢sql的時候很慢,不知道什麼原因,是否在走索引

解決辦法步驟

1. 依賴表結構及測試資料:

CREATE TABLE `student` (
  `student_id` int(11) DEFAULT NULL,
  `student_name` varchar(255) CHARACTER
SET utf8 COLLATE utf8_bin DEFAULT NULL, `subject` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL ); INSERT INTO `student` VALUES (1, '張三', '語文'); INSERT INTO `student` VALUES (2, '李四', '數學'); INSERT INTO `student` VALUES (3, '王二', '語文'); INSERT INTO `student` VALUES (4, '權一', '音樂'
); INSERT INTO `student` VALUES (5, '孫五', '語文');
CREATE TABLE `orders` (
  `student_id` int(11) DEFAULT NULL,
  `order_id` int(11) DEFAULT NULL
);
INSERT INTO `orders` VALUES (1, 1);
INSERT INTO `orders` VALUES (2, 2);
INSERT INTO `orders` VALUES (3, 3);
INSERT INTO `orders` VALUES (4, 4);

2. 基本關聯查詢sql

select * 
from student t1 
join orders t2 
on t1.student_id = t2.student_id

3. 檢視執行計劃

所謂執行計劃,顧名思義,就是對一個查詢任務,做出一份怎樣去完成任務的詳細方案

資料庫裡使用 explain + sql語句來檢視

執行explain + 上面sql得到

在這裡插入圖片描述

4. 增加索引

執行

alter table student add index stu_id(student_id);

alter table orders add index orders(student_id);

資料庫裡使用 explain + sql語句來檢視

執行explain + 上面sql得到

在這裡插入圖片描述

從上面兩個執行計劃對比可以看出,第二個查詢是走在索引上的
由於資料量較小,所以看不出查詢效率的差別,當資料量大時,可以看出明明顯的差別,
這樣就可以簡單的判斷查詢是否走在索引上,可以快速的定位和優化