優(yōu)化思路
詳細的MySQL優(yōu)化步驟如下:
- 檢查數(shù)據(jù)表結構,改善不完善設計
- 跑一遍主要業(yè)務,收集常用的數(shù)據(jù)庫查詢SQL
- 分析查詢SQL,適當拆分,添加索引等優(yōu)化查詢
- 優(yōu)化SQL的同時,優(yōu)化代碼邏輯
- 添加本地緩存和redis緩存
盡可能不要使用NULL值
因為建表的時候,如果不對創(chuàng)建的值設置默認值,MySQL都會設置默認為NULL
。那么為啥用NULL
不好呢?
NULL
使得索引維護更加復雜,強烈建議對索引列設置NOT NULL
NOT IN
、!=
等負向條件查詢在有NULL
值的情況下返回永遠為空結果,查詢容易出錯NULL
列需要一個額外字節(jié)作為判斷是否為NULL
的標志位- 使用
NULL
時和該列其他的值可能不是同種類型,導致問題。(在不同的語言中表現(xiàn)不一樣) - MySQL難以優(yōu)化對可為
NULL
的列的查詢
所以對于那些以前偷懶的字段,手動設置一個默認值吧,空字符串呀,0呀補上。
雖然這種方法對于MySQL的性能來說沒有提升多少,但是這是一個好習慣,而且以小見大,不要忽略這些細節(jié)。
添加索引
對于經(jīng)常查詢的字段,請加上索引,有索引和沒有索引的查詢速度相差十倍甚至