程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> 使用 EXPLAIN 進行 Mysql 語句性能優化

使用 EXPLAIN 進行 Mysql 語句性能優化

編輯:關於MYSQL數據庫

使用LAMP系列技術快一年了 雖然知道web應用的瓶頸通常是在數據庫

但是卻一直沒有仔細研究數據庫語句的性能優化

今天就從 EXPLAIN 開始整理吧

EXPLAIN 查詢語句會返回以下欄目

id       select_type        table       type   possible_keys     key     key_len     ref       rows       extra

id:不重要 此為SELECT的查詢序列號

select_type:SELECT 類型 可以為以下這幾種類型

------------------------------------------

SIMPLE 簡單的SELECT(沒有UNION或子查詢)

PRIMARY

UNION

DEPENDENT UNION

UNION RESULT

SUBQUERY

DEPENDENT SUBQUERY

DERIVED

------------------------------------------

table:輸出的行所引用的表(應該就是查詢了哪些表的意思)

type:鏈接類型 從 最佳類型 到 最壞類型

---------------------------------------------

system 表僅有一行(=系統表). const 聯接類型的特例

const     表最多有一個匹配行,它將在查詢開始時被讀取 const用於用常數值比較PRIMARY KEY或UNIQUE索引的所有部分時

eq_ref   可以用於使用= 操作符比較的帶索引的列

ref         可以用於使用=或<=>操作符的帶索引的列。

ref_or_null   該聯接類型如同ref,但是添加了MySQL可以專門搜索包含NULL值的行。在解決子查詢中經常使用該聯接類型的優化

例子:

SELECT * FROM ref_table

WHERE key_column=expr OR key_column IS NULL
index_merge  該聯接類型表示使用了索引合並優化方法
unique_subquery

該類型替換了下面形式的IN子查詢的ref:

value IN (SELECT primary_key FROM single_table WHERE some_expr)

unique_subquery是一個索引查找函數,可以完全替換子查詢,效率更高。

index_subquery

該聯接類型類似於unique_subquery。可以替換IN子查詢,但只適合下列形式的子查詢中的非唯一索引:

value IN (SELECT key_column FROM single_table WHERE some_expr)
range

只檢索給定范圍的行,使用一個索引來選擇行。key列顯示使用了哪個索引。key_len包含所使用索引的最長關鍵元素。在該類型中ref列為NULL。

當使用=、<>、>、>=、<、<=、IS NULL、<=>、BETWEEN或者IN操作符,用常量比較關鍵字列時,可以使用range:

SELECT * FROM tbl_name
WHERE key_column = 10;
SELECT * FROM tbl_name
WHERE key_column BETWEEN 10 and 20;
SELECT * FROM tbl_name
WHERE key_column IN (10,20,30);
SELECT * FROM tbl_name
WHERE key_part1= 10 AND key_part2 IN (10,20,30);
index   全掃描索引樹 與 ALL 性質差不多
ALL 全表掃描 很糟糕的情況

---------------------------------------------

possible_keys 可能使用的索引

key 實際使用的索引

key_len 決定使用的鍵長度

ref   顯示使用哪個列或常數與KEY一起選擇行

rows 執行查詢時必須檢查的行數

Extra

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved