您好,登錄后才能下訂單哦!
本文實例講述了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相關內容感興趣的讀者可查看本站專題:《MySQL查詢技巧大全》、《MySQL常用函數大匯總》、《MySQL日志操作技巧大全》、《MySQL事務操作技巧匯總》、《MySQL存儲過程技巧大全》及《MySQL數據庫鎖相關技巧匯總》
希望本文所述對大家MySQL數據庫計有所幫助。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。