摘要:這篇MySQL欄目下的“MYSQL資料庫表結構優化方法詳解”,介紹的技術點是“mysql資料庫表結構、MySQL資料庫、資料庫表結構、MySQL、據庫表結構、資料庫表”,希望對大家開發技術學習和問題解決有幫助。
本文執行個體講述了MYSQL資料庫表結構優化方法。分享給大家供大家參考,具體如下:
選擇合适的資料類型
1、使用可以存下你的資料的最小的資料類型
2、使用簡單的資料類型。Int要比varchar類型在mysql處理上簡單
3、盡可能的使用not null定義字段
4、盡量少用text類型,非用不可時最好考慮分表
使用int來存儲日期時間,利用FROM_UNIXTIME()【将int類型時間戳轉換成日期時間格式】,UNIX_TIMESTAMP()【将日期時間格式轉換成int類型】兩個函數進行轉換
使用bigint來存儲IP位址,利用INET_ATON()【将IP格式轉換成int】,INET_NTOA()【将int格式轉換成正常IP格式】兩個函數進行轉換
表的範式化和反範式化
範式化是指資料庫設計的規範,目前的範式化一般指第三設計範式,也就是要求資料表中不存在非關鍵字段對任意候選關鍵字段
的傳遞函數依賴則符合第三範式。

不符合第三範式要求的表存在下列問題:
1、資料備援:(分類,分類描述)對于每一個商品都會進行記錄
2、資料的插入/更新/删除異常
範式化操作:
反範式化是指為了查詢效率和考慮把原本符合第三範式的表适當的增加備援,以達到優化查詢效率的目的,反範式化是一種以空間來換取時間的操作。
例:
對表進行反範式化
反範式化查詢訂單資訊:
表的垂直拆分
垂直拆分就是把原來 很多列的表拆分成多個表,這就解決了表的寬度問題。通常垂直拆分可以按以下原則進行:
1、把不常用的字段單獨存放到一個表中。
2、把大字段獨立存放到一個表中。
3、把經常一起使用的字段放到一起。
水準拆分
表的水準拆分是為了解決單表的資料量過大問題,水準拆分的表每個表的結構都是完全一緻的
常用的水準拆分方法:
1、對customer_id進行hash運算,如果要拆分成5個表則使用mod(custoneer_id,5)取出0-4個值
2、針對不同的hashID把資料存到不同的表中
希望本文所述對大家MySQL資料庫計有所幫助。