SQL優化(1)-分析方法(工具)

SQL效率問題定位:mysql

在進行SQL優化前,需定位哪些SQL效率低,這一過程有以下幾種方式、方法:sql

  1. show profiles:是mysql提供能夠用來分析當前會話中語句執行的資源消耗狀況。能夠用於SQL的調優測量,show profiles 可以在作SQL優化時幫助咱們瞭解時間都耗費到哪裏去了。
  2. 慢日誌:慢日誌默認是關閉的,可配置開啓(slow_query_log)、指定慢日誌文件名、配置查詢時間限制(定義超過多少時間爲慢查詢)。

explain:性能

經過上述方法定位到效率低的SQL後,可經過explain分析SQL如何執行的。優化

字段 含義
 id select查詢的序列號,是一組數字,表示的是查詢中執行select子句或者是操做表的順序。
select_type 表示 SELECT 的類型,常見的取值有 SIMPLE(簡單表,即不使用錶鏈接或者子查詢)、PRIMARY(主查詢,即外層的查詢)、UNION(UNION 中的第二個或者後面的查詢語句)、SUBQUERY(子查詢中的第一個SELECT)等
 table  輸出結果集的表
 type 表示表的鏈接類型,性能由好到差的鏈接類型爲( system ---> const-----> eq_ref ------> ref -------> ref_or_null---->index_merge ---> index_subquery -----> range ----->index ------> all )
 possible_keys 表示查詢時,可能使用的索引
 key 表示實際使用的索引
 key_len 索引字段的長度
 rows 掃描行的數量
 extra 執行狀況的說明和描述

MySQL默認使用存儲引擎InnonDB的索引結構是B+樹。而根據葉子節點的內存存儲不一樣,索引類型分爲主鍵索引(聚簇索引)和非主鍵索引(二級索引、輔助索引)。日誌

主鍵索引的葉子節點,存儲的是整行信息。非主鍵索引葉子節點存儲的是主鍵的值。blog

相關文章
相關標籤/搜索