數據庫優化方案:mysql
1.表的設計合理化(符合3NF)面試
2.添加適當索引(index)【四種:普通索引、主鍵索引、惟一索引、全文索引】sql
三、分表技術(水平分割、垂直分割)數據庫
四、讀寫分離編程
五、存儲過程【模塊化編程】緩存
六、對mysql配置優化【配置最大併發數my.ini,調整緩存大小】服務器
七、mysql服務器硬件升級網絡
八、定時的去清除不須要的數據,定時進行碎片整理(MyISAM)mysql優化
mysql優化我通常聽從五個原則:架構
- sql優化第一最基本的爲了最快的速度查詢到數據,減小消耗,儘可能避免全表查詢,首先考慮在where和order by字段上創建索引
- where子句條件 後不要使用!=和》《操做符,不然數據庫會放棄索引使用全表查詢
- 用like模糊查詢時不建議在查詢字段開頭或首尾兩端使用百分號,這也會致使字段放棄索引,全表查詢,能夠考慮百分號在查詢字段後面或者使用全文索引
- 在sql中直接使用計算表達式和函數,也會致使索引失敗,能夠在等號右邊計算
- 不要寫select * from 須要什麼字段返回什麼字段減小消耗
- 在sql語句中嵌套SQL查詢 ,不要使用iN 或者 not in 可使用 exists替代
- 對於複雜的查詢,可使用中間臨時表 暫存數據
- 查詢數據量大的表 會形成查詢緩慢。主要的緣由是掃描行數過多。這個時候能夠經過程序,分段分頁進行查詢,循環遍歷,將結果合併處理進行展現。
- 對數據量較大的表,使用分區分表存儲
- 必定要按期維護數據表和優化索引,刪除空餘數據
- 儘可能使用數字型字段
儘可能使用數字型字段,若只含數值信息的字段儘可能不要設計爲字符型,這會下降查詢和鏈接的性能,並會增長存儲開銷。這是由於引擎在處理查詢和鏈接時會 逐個比較字符串中每個字符,而對於數字型而言只須要比較一次就夠了。
大家有沒有作 MySQL 讀寫分離?如何實現 MySQL 的讀寫分離?MySQL 主從複製原理的是啥?如何解決 MySQL 主從同步的延時問題?