1、優化分片鍵(如果有分庫分表)
(1)不要使用分割槽,分割槽效能很低,難以維護
(2)不要使用主從資料庫,讀寫分離有了快取就再也不需要分主從了,畢竟延遲問題是無法解決的(雖然很小)
(3)如果使用分庫分表,那麼查詢條件務必先走分片鍵,否則就成了全表查詢,效能超低
2、優化索引
(1)索引列務必重複度低
(2)使用索引就不能用or查詢,否則索引不起作用
(3)使用索引,like模糊查詢不能以%開頭
(4)查詢條件務必以索引列開頭,否則索引失效
(5)聯合索引遵守最左原則
3、優化快取
分離冷熱資料,對於大記憶體訪問評率低的資料適當分離
提高快取命中率,命名問題
4、優化sql
見下面5、硬體優化(治標不治本)
一.優化sql語句又分為以下幾個方面:
優化查詢語句
1、通過explain和describe關鍵字分析select查詢語句,從而使開發人員知道查詢效率低的原因。
語法如下:explain select * from bookmanager where name='admin' \g;
2、通過新增索引進行優化
說起資料庫的效能,索引可能使最物美價廉的東西了。使用索引可以快速的定位表中的某條記錄,不用新增記憶體、不用修改程式,也不用呼叫sql語句,只需執行乙個建立正確的索引,查詢速度就可能提高千倍萬倍。
索引並不一定是主鍵或者唯一的字段,如果表中的某個字段總是被搜尋,就可以為其建立索引。
建立索引的語句如下:
create index index_name on table_name(manname);
使用索引應注意的事項:
(1)使用多列索引時,查詢條件必須使用索引的第乙個字元。
(2)like關鍵字配置的字串不能以符號「%」開頭。
(3)or關鍵字連線的所有條件都必須使用索引。如果or前後有乙個條件的列不是索引,那麼查詢中講不使用索引。
3、優化order by
有兩種方式如下:
(1)索引優化:對by後的列新增索引,從而大達到優化的目的。
(2)where+order by 的組合優化:通過where進行限制後在進行order by
4、優化group by (同3中通過加索引和where進行優化)
5、優化limit
6、優化子查詢
在mysql中通過使用連線查詢來代替子查詢,從而達到優化目的。原因:子查詢在執行的時候 資料庫需要位內層查詢語句的查詢結果建立乙個臨時表,然後外層語句查詢臨時表,所以子查詢的效率比較低,而連線查詢就不存在這個問題。
總結優化查詢的基本原則如下:
盡可能對每一條執行的sql語句進行explain
盡力少使用join(少使用多表查詢)
盡量少排序
盡量避免select * 查詢
盡量使用連線代替子查詢
盡量少使用or關鍵字
盡量使用union all代替union
盡量早過濾
避免「型別轉換」
優化先優化高併發的sql語句
從全域性出發優化,而不是片面調整
優化其他執行語句
1、優化insert語句
禁用索引,禁用唯一性檢查,使用一條insert插入多條語句。
2、優化update語句
使用乙個update語句同時做多個更新。
3、優化delete語句
刪除一條記錄的時間與索引的數量成正比。刪除乙個表的所有行,使用truncate table tbname 而不要使用delete from table
二、優化資料庫結構
1、優化字段型別
資料庫最耗時的就是io處理,所以盡可能減少io讀寫量。
數字型別:盡量不要使用double型別,不僅是長度問題,還有精度問題。對於整數,資料量大時區分tinyint、int、bigint,如果確定不實用負數,新增unsigned定義。
字元型別:盡量不要使用text型別,效能低於char和varchar,定長使用char,不定長使用varchar
時間型別:盡量不使用timestamp,只精確到某一天的話,可用date型別。
enum和set:狀態字段用enum,如果存放可預先定義的屬性資料可以嘗試用set
2、優化字元編碼
3、適當進行拆分
4、適當增加冗餘
5、優化資料庫表
三、優化mysql伺服器
優化原則如下:
記憶體中的資料要比磁碟上的資料訪問的快。
讓資料盡可能長時間的留在記憶體裡能減少磁碟讀寫活動的工作量。
mysql資料庫如何優化?
30種sql查詢語句優化方法 1 應盡量避免在 where 子句中對字段進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃瞄,如 select id from t where num is null 可以在num上設定預設值0,確保表中num列沒有null值,然後這樣查詢 select ...
資料庫如何優化
1.程式優化,用 prepareedstatement 進行增刪改查 2.程式優化,盡量批量處理,避免逐條處理,減小 io數 3.查詢結果不要用 來查詢所有字段,要明確指明結果字段 4.減少多表連線數,盡量少的表進行連線 5.表連線時,盡量用主鍵進行連線或用唯一索引 6.表的查詢多時,一定建立索引 ...
MySQL資料庫如何做好優化
碰到過好幾次這樣的題目,可每次都不能答的完全正確.現在大概列出如下 忘各位補充 1.資料庫的設計 盡量把資料庫 設計的更小的佔磁碟空間.1 盡可能使用更小的整數型別.mediumint就比int更合適 2 盡可能的定義欄位為not null,除非這個字段需要null.3 如果沒有用到變長字段的話比如...