mysql 的最佳化,重點說語句最佳化,結構設計就不談了
一、資料庫的配置最佳化配置最大併發數:my.ini 中 max_connections=200 # 允許最大連線數。調整快取的大小:緩衝和緩衝池的大小二、資料庫表的最佳化1、選擇合理的儲存引擎。
2、選擇合適的排序規則
utf8_general_ci:校對速度快,但準確度稍差;不區分大小寫。utf8_unicode_ci:準確度高,但校對速度稍慢。utf8_general_cs:區分大小寫。utf_bin:可儲存二進位制,區分大小寫。3、表結構最佳化
儘量多使用數字型別欄位,對比效率會提高。欄位 定長、較短儘量使用 char 型別,提高效率;不定長使用 varchar 型別,節省記憶體。表的列太多,如:經常訪問某些列的時候,可考慮把常用列,垂直分割,只是全部查詢時要用 join 連結表。維護被分割的表,要用觸發器或儲存過程進行同步。表的行太多,如:經常進行大數量的月流水統計,可考慮按月進行,水平分割,,只是全部查詢時,要用 union 或 union all 合併。表的垂直分割
表的水平分割
三、sql 語句的最佳化1、適當給欄位加索引
數量不能過多,建議不超過5個,可以根據情況來定欄位不要重複太多,主要用於查詢操作欄位長度儘量短,或時數字型別2、where 子句 條件最佳化
where 子句 like 前置百分號 ‘%查詢’,索引會失效where 子句 or 有一個條件欄位沒有索引,索引會失效where 子句 != ,索引會失效where 子句 條件使用正確的型別,例如儲存的字串 就得用 where case_id = 'case001'3、其他最佳化
查詢中如果確定條數,後面加上 limit n不使用 select * 在 order by 或者 group by 的列上建立索引text、blog,大於512位元組的字串,放到單獨的表子查詢用 join 替代4、開啟慢查詢
檢視一下慢查詢是否開啟
設定慢查詢引數
最新評論