使用explain優化sql
對於複雜、效率低的sql語句,我們通常是使用explain sql 來分析sql語句,這個語句可以列印出,語句的執行過程。這樣方便我們分析,進行優化。
首先,說一下,explain查詢出來的資料如何分析。
table :這一列是查詢設計的表。
type :很重要的一列,顯示了查詢使用了那種型別,是否使用的索引,能反映出語句的質量。一般這個指標從好到壞依次是:system>const>eq_ref>ref(最好能達到)>fulltext>ref_or_null>index_merge>unique_subquery>index_subquery>range>index>ALL
為了保證查詢至少達到range級別。最好達到ref,否則的話,只能說明這條語句效能有待提高。
- ref 表示所有具有匹配的索引的行都被用到
- range索引範圍內查詢
- index全索引樹掃描
- all全表掃描
possible_keys:指出mysql在試用了哪個索引在該表中查詢行。如果沒有使用任何索引,就顯示的NULL,可以用於對優化時的索引調整。
key:顯示使用的索引,如果沒有使用,則顯示NULL
key_len:顯示的是所使用的索引長度,如果沒使用,則是NULL。當然,在使用索引的情況下,索引長度越小。效果越明顯。
ref:顯示使用那個列或常數雨key一起從表中選擇行。
rows:執行查詢的行數,如果行數越小,說明查詢次數越少,效率越高。
extra:包含查詢mysql解決查詢的詳細資訊。
在上面的查詢解釋表中,type為ALL所以,這個查詢是全表掃描,並沒有使用索引。所以,我們要分析這條語句中,哪個查詢條件,適合新增索引。這個要根據具體問題具體分析了。
接下來,我對role表中的priority_level新增索引,新增後執行結果如下:
查詢次數變少了。而且也用到了剛才加的pl_idx索引。查詢效率提高了。當然這只是優化了一小步。也只是初步認識了一下explain。還需要多加練習。
相關文章
- MySQL: 使用explain 優化查詢效能MySqlAI優化
- 資料庫查詢優化:使用explain分析sql語句執行效率資料庫優化AISQL
- mysql優化之explain 指令MySql優化AI
- mongodb之使用explain和hint效能分析和優化MongoDBAI優化
- MySQL查詢優化利刃-EXPLAINMySql優化AI
- [MySQL 優化] Explain 之 type 詳解MySql優化AI
- mysql查詢優化檢查 explainMySql優化AI
- Explain Extended檢視MySQL的優化AIMySql優化
- SQL優化案例-使用with as優化Subquery Unnesting(七)SQL優化
- 使用SQL Profile進行SQL優化案例SQL優化
- MySQL優化學習筆記之explainMySql優化筆記AI
- mysql優化之explain備忘筆記MySql優化AI筆記
- 使用with as優化sql解決filter優化SQLFilter
- 在EM中使用SQL Tuning Advisor(SQL優化建議)優化SQLSQL優化
- 使用優化實用工具來優化SQL Server效能優化SQLServer
- 不會看 Explain執行計劃,勸你簡歷別寫熟悉 SQL優化AISQL優化
- 不會看 Explain 執行計劃,勸你簡歷別寫熟悉 SQL 優化AISQL優化
- Hive使用Calcite CBO優化流程及SQL優化實戰Hive優化SQL
- 【SQL優化】SQL優化工具SQL優化
- sql優化之多列索引的使用SQL優化索引
- SQL Server優化之SQL語句優化SQLServer優化
- SQL優化SQL優化
- with as優化sql優化SQL
- 效能優化案例-SQL優化優化SQL
- [sql 優化]使用TKPROF格式化TRACE輸出SQL優化
- SQL使用模糊查詢like的優化SQL優化
- SQL優化(二)(聯合索引的使用)SQL優化索引
- 使用dbms_sqltune進行SQL優化SQL優化
- 使用SQL調整顧問得到SQL優化建議SQL優化
- 資料庫優化 - SQL優化資料庫優化SQL
- sql優化之邏輯優化SQL優化
- SQL優化:limit分頁優化SQL優化MIT
- MySQL 效能優化之SQL優化MySql優化
- SQL優化--用各種hints優化一條SQLSQL優化
- 【SQL優化】SQL優化的10點注意事項SQL優化
- SQL SERVER中SQL優化SQLServer優化
- 淺析MySQL語句優化中的explain引數MySql優化AI
- SQL優化指南SQL優化