1資料庫結構優化
a建表的時候優化:
列選擇原則
1欄位型別優先順序:整形》date,time->char varchar->text、blob
2合理地設定字段大小夠用就可以
3盡量不要用text型別
4盡量不用null() 索引null列需要額外的空間來儲存
5對於非負型的資料 (如整型 ip) 來說,要優先用無符號整型來儲存 無符號佔多出一倍。
6同財務相關的金額類資料必須使用 decimal 型別。
b反正規化設計表 目的–減少表的關聯查詢
方法->冗餘字段(某欄位儲存另一表的統計資訊)
冗餘表(表中統計或彙總其他表的資訊)
c將字段很多的表分解成多個表:對於使用頻率低的字段分離出來形成新錶。
d增加中間表
2查詢語句優化
a 常見的查詢優化
避免直接使用 select *
中 in 包含的值不應過多
當只需要一條資料的時候,使用 limit 1
sql 語句要避免造成索引失效的
如果排序字段沒有用到索引,就盡量少排序
不建議使用%字首模糊查詢
b快取優化 資料庫開啟了 query cache(簡稱 qc)功能
c讀寫分離 主資料庫處理增、改、刪操作,而從資料庫處理查詢操作。
d mysql的分庫分表 垂直拆分(業務)與水平拆分(表id)
f explain
用 explain 檢視 sql 執行計畫,在查詢語句中加入explain(解釋)
查出來有乙個重要的字段是type 表示表的連線型別
從最佳型別到最差型別 system const(理解為最佳) eq_ref 等等10個 直到all是最差。
3索引及優化
索引:提高資料查詢的效率 就說是比如:然後說兩條。
選擇唯一性索引
唯一性索引的值是唯一的,可以更快速的通過該索引來確定某條記錄。
為經常需要排序、分組和聯合操作的字段建立索引:
為常作為查詢條件的字段建立索引。
限制索引的數目: 越多的索引,會使更新表變得很浪費時間。
盡量使用資料量少的索引
如果索引的值很長,那麼查詢的速度會受到影響。
盡量使用字首來索引
如果索引欄位的值很長,最好使用值的字首來索引。
刪除不再使用或者很少使用的索引
最左字首匹配原則,非常重要的原則。
盡量選擇區分度高的列作為索引
區分度的公式是表示欄位不重複的比例
索引列不能參與計算,保持列「乾淨」:帶函式的查詢不參與索引。
盡量的擴充套件索引,不要新建索。
4伺服器優化
配置較大的記憶體 配置高速磁碟(ssd等)
5儲存引擎的選擇優化
myisam 更適合讀密集的表,而 innodb 更適合寫密集的的表。
mysql資料庫優化的思路
sys tem cons t eq ref ref ran ge i ndex all system to const to eq ref to ref to range to index to all system con st e q re f re f ra nge inde x al l正規...
資料庫優化思路
1 根據服務層面 配置mysql效能優化引數 2 從系統層面增強mysql的效能 優化資料表結構 字段型別 字段索引 分表,分庫 讀寫分離等等。3 從資料庫層面增強效能 優化sql語句,合理使用字段索引。4 從 層面增強效能 使用快取和nosql資料庫方式儲存,如mongodb memcached ...
資料庫正規化及MYSQL優化整體思路
一 資料庫正規化 為了建立冗餘較小 結構合理的資料庫,設計資料庫時必須遵循一定的規則。在關係型資料庫中這種規則就稱為正規化。正規化是符合某一種設計要求的總結。要想設計乙個結構合理的關係型資料庫,必須滿足一定的正規化。1.1 第一正規化 1nf 每一列不可包含多個值 所謂第一正規化 1nf 是指資料庫...