首頁>技術>

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、開啟慢查詢

檢視一下慢查詢是否開啟

設定慢查詢引數

11
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 初學java,你知道JVM、JRE與JDK的區別嗎?