溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

MYSQL數(shù)據(jù)庫表結(jié)構(gòu)優(yōu)化方法詳解

發(fā)布時(shí)間:2020-10-19 04:57:42 來源:腳本之家 閱讀:170 作者:人生如初見_張默 欄目:MySQL數(shù)據(jù)庫

本文實(shí)例講述了MYSQL數(shù)據(jù)庫表結(jié)構(gòu)優(yōu)化方法。分享給大家供大家參考,具體如下:

 選擇合適的數(shù)據(jù)類型

    1、使用可以存下你的數(shù)據(jù)的最小的數(shù)據(jù)類型

    2、使用簡單的數(shù)據(jù)類型。Int要比varchar類型在mysql處理上簡單

    3、盡可能的使用not null定義字段

    4、盡量少用text類型,非用不可時(shí)最好考慮分表

使用int來存儲(chǔ)日期時(shí)間,利用FROM_UNIXTIME()【將int類型時(shí)間戳轉(zhuǎn)換成日期時(shí)間格式】,UNIX_TIMESTAMP()【將日期時(shí)間格式轉(zhuǎn)換成int類型】兩個(gè)函數(shù)進(jìn)行轉(zhuǎn)換

使用bigint來存儲(chǔ)IP地址,利用INET_ATON()【將IP格式轉(zhuǎn)換成int】,INET_NTOA()【將int格式轉(zhuǎn)換成正常IP格式】兩個(gè)函數(shù)進(jìn)行轉(zhuǎn)換

表的范式化和反范式化

范式化是指數(shù)據(jù)庫設(shè)計(jì)的規(guī)范,目前的范式化一般指第三設(shè)計(jì)范式,也就是要求數(shù)據(jù)表中不存在非關(guān)鍵字段對任意候選關(guān)鍵字段

的傳遞函數(shù)依賴則符合第三范式。

MYSQL數(shù)據(jù)庫表結(jié)構(gòu)優(yōu)化方法詳解

不符合第三范式要求的表存在下列問題:

    1、數(shù)據(jù)冗余:(分類,分類描述)對于每一個(gè)商品都會(huì)進(jìn)行記錄

    2、數(shù)據(jù)的插入/更新/刪除異常

范式化操作:

MYSQL數(shù)據(jù)庫表結(jié)構(gòu)優(yōu)化方法詳解

反范式化是指為了查詢效率和考慮把原本符合第三范式的表適當(dāng)?shù)脑黾尤哂啵赃_(dá)到優(yōu)化查詢效率的目的,反范式化是一種以空間來換取時(shí)間的操作。

例:

MYSQL數(shù)據(jù)庫表結(jié)構(gòu)優(yōu)化方法詳解

MYSQL數(shù)據(jù)庫表結(jié)構(gòu)優(yōu)化方法詳解   

對表進(jìn)行反范式化

MYSQL數(shù)據(jù)庫表結(jié)構(gòu)優(yōu)化方法詳解

反范式化查詢訂單信息:

MYSQL數(shù)據(jù)庫表結(jié)構(gòu)優(yōu)化方法詳解

表的垂直拆分

   垂直拆分就是把原來 很多列的表拆分成多個(gè)表,這就解決了表的寬度問題。通常垂直拆分可以按以下原則進(jìn)行:

        1、把不常用的字段單獨(dú)存放到一個(gè)表中。

        2、把大字段獨(dú)立存放到一個(gè)表中。

        3、把經(jīng)常一起使用的字段放到一起。

水平拆分

    表的水平拆分是為了解決單表的數(shù)據(jù)量過大問題,水平拆分的表每個(gè)表的結(jié)構(gòu)都是完全一致的

MYSQL數(shù)據(jù)庫表結(jié)構(gòu)優(yōu)化方法詳解

 常用的水平拆分方法:

    1、對customer_id進(jìn)行hash運(yùn)算,如果要拆分成5個(gè)表則使用mod(custoneer_id,5)取出0-4個(gè)值

    2、針對不同的hashID把數(shù)據(jù)存到不同的表中

更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《MySQL查詢技巧大全》、《MySQL常用函數(shù)大匯總》、《MySQL日志操作技巧大全》、《MySQL事務(wù)操作技巧匯總》、《MySQL存儲(chǔ)過程技巧大全》及《MySQL數(shù)據(jù)庫鎖相關(guān)技巧匯總》

希望本文所述對大家MySQL數(shù)據(jù)庫計(jì)有所幫助。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI