文章目錄
- 18.2.1、分析查詢語句
- 18.2.2、索引
- 18.3.1、將欄位很多的表分解成多個表
- 18.3.2、增加中間表
- 18.3.3、增加冗餘欄位
- 18.3.4、最佳化插入記錄的速度
- 18.3.5、分析、檢查和最佳化表
- 18.4.1、最佳化伺服器硬體
- 18.4.2、最佳化MySQL參數
18.1、最佳化簡介
SHOW STATUS LIKE ‘value’;
connections 串連數
uptime 啟動時間
slow_queries 慢查詢次數
com_select 查詢操作次數
com_insert 插入操作次數
com_update 更新操作次數
com_delete 刪除操作次數
18.2、最佳化查詢18.2.1、分析查詢語句
Explain/desc select;
type: 連線類型
system 表中只有一條記錄
const 表中有多條記錄,但只從表中查詢一條記錄
all 對錶進行了完整的掃描
eq_ref 表示多表串連時,後面的表使用了unique或PRIMARYKEY
ref 表示多表查詢時,後面的表使用了普通索引
unique_subquery 表示子查詢中合作了unique或primary key
index_subquery 表示子查詢中使用了普通索引
range 表示查詢中給出了查詢的範圍
index 表示對錶中索引進行了完整的掃描
possible_key 表示查詢中可能使用的索引
key 表示查詢時使用到的索引
18.2.2、索引
1、走單列索引
2、走多列索引
3、不走索引的查詢
Like 以 %開頭的不走
Or 兩邊的列有一個沒有建立索引不走索引
多列索引第一個欄位沒有使用不走索引
18.3、最佳化資料庫結構18.3.1、將欄位很多的表分解成多個表18.3.2、增加中間表18.3.3、增加冗餘欄位
反範式
空間換時間
18.3.4、最佳化插入記錄的速度
1、禁用索引
ALTERTABLE table DISABLE/ENABLE KEYS;
2、禁用唯一索引
STUNIQUE_CHECK=0/1
3、最佳化INSERT語句
使用 INSERT INTO table (f1,f2….fn) VALUES (v1,v2….vn),
(f1,f2….fn) VALUES (v1,v2….vn),
(f1,f2….fn) VALUES (v1,v2….vn),
…
代替多個INSERT INTO
18.3.5、分析、檢查和最佳化表
ANALYZETABLE table1[, table2…]
CHECKTABLE table1[, table2…]
OPTIMIZE TABLE table1[, table2…]
最佳化文字欄位,消除更新操作帶來的片段,減少空間浪費
18.4、最佳化MySQL伺服器18.4.1、最佳化伺服器硬體
CPU
磁碟,陣列
記憶體
配置(專用伺服器,大記憶體配置)
18.4.2、最佳化MySQL參數
my.ini