MySQL優(yōu)化這個話題比較“沉重”......
大概可以從以下幾個大的方向進行
1:物理機器、MySQL的配置優(yōu)化(不太了解)
2:邏輯設計
也就是怎么設計表
范式與反范式钢猛,有時候為了查詢方便可以適當?shù)娜哂嘧侄?br>
比如在”標簽與帖子關聯(lián)”表中拉庶,冗余一個帖子發(fā)布時間和帖子狀態(tài)字段
方便實現(xiàn)”查詢具有某些標簽的正常帖子备闲,按照時間倒敘排序”蝇棉。當然這基于這些字段很少很少更新
單獨一個表
比如帖子的相關計數(shù)數(shù)據(jù):查看量喜最、評論量俐末、點贊量等料按,這時候可以單獨一個表,而非放到帖子表中
這樣可以減少對帖子表的影響鹅搪,也方便計數(shù)的業(yè)務獨立出來
3:選擇合適存儲引擎和字段類型
要了解常見的存儲引擎以及特性站绪,然后根據(jù)表的實際應用場景選擇。后面單獨做個總結吧
要了解MySQL幾種數(shù)據(jù)類型和數(shù)據(jù)類型占用的字節(jié)數(shù)
選擇原則是:
越小越好丽柿,比如恢准,能用tinyint的絕對不用int
越簡單越好魂挂,比如, 整形比字符串操作代價更小馁筐、用內置的時間和日期類型表示日期涂召,而非字符串、IP用整形而非字符串
4:索引優(yōu)化
索引原理敏沉、MySQL索引實現(xiàn)
索引的建立要依據(jù)查詢的SQL
索引不能太多果正,盡量建立聯(lián)合索引,區(qū)分度很低的字段不要建立單獨的索引
聯(lián)合索引:最左匹配
全值匹配盟迟、匹配最左前綴秋泳、匹配列前綴(比如like 'key%’)、匹配范圍值(between > <)攒菠、只訪問索引的查詢
order by什么情況下會使用索引
in(1,2,3,4)這種查詢如何使用索引
5:查詢優(yōu)化
1:多個簡單的單表+索引查詢
2:盡量不用join
3:盡量不用子查詢迫皱,可以用join查詢代替(當然最好別用join)