我們要討論的是數據庫性能優化的另一方面
▲ SHOW
執行下面這個命令可以了解服務器的運行狀態
mysql >show status;
該命令將顯示出一長列狀態變量及其對應的值
SHOW命令除了能夠顯示出MySQL服務器整體狀態信息之外
▲ EXPLAIN
EXPLAIN能夠分析SELECT命令的處理過程
下面這個例子顯示了如何用EXPLAIN提供的信息逐步地優化連接查詢
假定用EXPLAIN分析的SELECT命令如下所示
EXPLAIN SELECT tt
tt
tt
tt
tt
tt
et_
FROM tt
WHERE tt
AND tt
AND tt
AND tt
SELECT命令中出現的表定義如下
※表定義
表 列 列類型
tt ActualPC CHAR(
tt AssignedPC CHAR(
tt ClientID CHAR(
et EMPLOYID CHAR(
do CUSTNMBR CHAR(
※索引
表 索引
tt ActualPC
tt AssignedPC
tt ClientID
et EMPLOYID (主鍵)
do CUSTNMBR (主鍵)
※tt
在進行任何優化之前
table type possible_keys key key_len ref rows Extra
et ALL PRIMARY NULL NULL NULL
do ALL PRIMARY NULL NULL NULL
et_
tt ALL AssignedPC
range checked for each record (key map:
每一個表的type都是ALL
這裡的問題之一在於
為了解決這兩個列的長度不匹配問題
mysql > ALTER TABLE tt MODIFY ActualPC VARCHAR(
現在tt
table type possible_keys key key_len ref rows Extra
tt ALL AssignedPC
do ALL PRIMARY NULL NULL NULL
range checked for each record (key map:
et_
range checked for each record (key map:
et eq_ref PRIMARY PRIMARY
這還算不上完美
為了避免tt
mysql > ALTER TABLE tt MODIFY AssignedPC VARCHAR(
MODIFY ClientID VARCHAR(
現在EXPLAIN顯示的結果如下
table type possible_keys key key_len ref rows Extra
et ALL PRIMARY NULL NULL NULL
tt ref AssignedPC
et_
do eq_ref PRIMARY PRIMARY
這個結果已經比較令人滿意了
余下的問題在於
shell > myisamchk
shell > mysqladmin refresh
現在這個連接操作已經非常理想
table type possible_keys key key_len ref rows Extra
tt ALL AssignedPC
et eq_ref PRIMARY PRIMARY
et_
do eq_ref PRIMARY PRIMARY
▲ OPTIMIZE
OPTIMIZE能夠恢復和整理磁盤空間以及數據碎片
結束語
From:http://tw.wingwit.com/Article/program/MySQL/201311/29426.html