Vue的基礎語法
1.抓取資料
-- 檢視慢查詢收集是否開啟 SHOW VARIABLES LIKE 'slow_query%'; -- 開啟慢查詢收集 SET GLOBAL slow_query_log='ON'; -- 檢視慢查詢收集的閾值 SHOW VARIABLES LIKE 'long_query_time'; -- 設定慢查詢收集的閾值為3秒 SET GLOBAL long_query_time=3; -- 檢視慢查詢被收集的記錄數目 SHOW GLOBAL STATUS LIKE '%Slow_queries%';
2.EXPLAIN 檢視執行計劃
【 id 】
可以獲得SQL的執行順序
數字越大,越早被執行;數字相同,由上往下執行;
【 select_type 】
-SIMPLE 簡單的查詢
-PRIMARY 最外層的表,通常和UNION、DERIVED混合使用
-UNION 表被union
-DERIVED 派生表,如巢狀查詢SELECT t.* FROM ( SELECT class_name FROM tb_class ) t 中的 tb_class 表
【 table 】
參與的表名稱
當值為<derived4> 時,表示 id 為 4 的派生表
【 type 】
- ALL 全表掃描
- index 按照索引順序全表掃描
-range 範圍掃描
- ref 走了不唯一的索引掃描
- eq_ref 走了唯一性索引
- const where 主鍵 = 常量
【 possible_keys 】
預測應該被使用到的索引
【 key 】
實際使用到的索引
【 key_len 】
索引key的長度。
主要區分複合索引,當用到了相同的複合索引,有效列列越多,key_len長度越長
【 ref 】
一般標識 where 語句部分,where表等號 後邊部分
- 庫.表.欄位
- 常量
【rows】
查詢語句影響的行數
【Extra】
- Using filesort
當排序無法使用索引的時候,MySQL 會選擇一定的演算法進行排序,資料少時會在記憶體進行排序,資料多時會在磁碟進行排序
- Using temporary
一般查詢語句中包含 order by , group by 會出現
為了解決查詢,MySQL需要建立一個臨時表來容納結果。典型情況如查詢包含可以按不同情況列出列的GROUP BY和ORDER BY子句時。很明顯就是通過where條件一次性檢索出來的結果集太大了,記憶體放不下了,只能通過家裡臨時表來輔助處理;
3.建索引
全值匹配我最愛,帶頭大哥不能死,中間兄弟不能斷,範圍之後全無效
不能使用索引 !=、<>、is null、is not null、like ‘%xx’
少用 or
like 索引失效問題
建帶有like列的複合索引
用IN 還是用 exists
大前提,A\B兩表id建索引
SELECT * FROM A WHERE A.id IN ( SELECT id FROM B )
從少的(B)裡面挑多的(A)用in
從多的裡面挑少的用exists