MYSQL數(shù)據(jù)庫(kù)表結(jié)構(gòu)優(yōu)化方法詳解
本文實(shí)例講述了MYSQL數(shù)據(jù)庫(kù)表結(jié)構(gòu)優(yōu)化方法。分享給大家供大家參考,具體如下:
選擇合適的數(shù)據(jù)類型
1、使用可以存下你的數(shù)據(jù)的最小的數(shù)據(jù)類型
2、使用簡(jiǎn)單的數(shù)據(jù)類型。Int要比varchar類型在mysql處理上簡(jiǎn)單
3、盡可能的使用not null定義字段
4、盡量少用text類型,非用不可時(shí)最好考慮分表
使用int來(lái)存儲(chǔ)日期時(shí)間,利用FROM_UNIXTIME()【將int類型時(shí)間戳轉(zhuǎn)換成日期時(shí)間格式】,UNIX_TIMESTAMP()【將日期時(shí)間格式轉(zhuǎn)換成int類型】?jī)蓚€(gè)函數(shù)進(jìn)行轉(zhuǎn)換
使用bigint來(lái)存儲(chǔ)IP地址,利用INET_ATON()【將IP格式轉(zhuǎn)換成int】,INET_NTOA()【將int格式轉(zhuǎn)換成正常IP格式】?jī)蓚€(gè)函數(shù)進(jìn)行轉(zhuǎn)換
表的范式化和反范式化
范式化是指數(shù)據(jù)庫(kù)設(shè)計(jì)的規(guī)范,目前的范式化一般指第三設(shè)計(jì)范式,也就是要求數(shù)據(jù)表中不存在非關(guān)鍵字段對(duì)任意候選關(guān)鍵字段
的傳遞函數(shù)依賴則符合第三范式。

不符合第三范式要求的表存在下列問(wèn)題:
1、數(shù)據(jù)冗余:(分類,分類描述)對(duì)于每一個(gè)商品都會(huì)進(jìn)行記錄
2、數(shù)據(jù)的插入/更新/刪除異常
范式化操作:

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

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

反范式化查詢訂單信息:

表的垂直拆分
垂直拆分就是把原來(lái) 很多列的表拆分成多個(gè)表,這就解決了表的寬度問(wèn)題。通常垂直拆分可以按以下原則進(jìn)行:
1、把不常用的字段單獨(dú)存放到一個(gè)表中。
2、把大字段獨(dú)立存放到一個(gè)表中。
3、把經(jīng)常一起使用的字段放到一起。
水平拆分
表的水平拆分是為了解決單表的數(shù)據(jù)量過(guò)大問(wèn)題,水平拆分的表每個(gè)表的結(jié)構(gòu)都是完全一致的

常用的水平拆分方法:
1、對(duì)customer_id進(jìn)行hash運(yùn)算,如果要拆分成5個(gè)表則使用mod(custoneer_id,5)取出0-4個(gè)值
2、針對(duì)不同的hashID把數(shù)據(jù)存到不同的表中
更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《MySQL查詢技巧大全》、《MySQL常用函數(shù)大匯總》、《MySQL日志操作技巧大全》、《MySQL事務(wù)操作技巧匯總》、《MySQL存儲(chǔ)過(guò)程技巧大全》及《MySQL數(shù)據(jù)庫(kù)鎖相關(guān)技巧匯總》
希望本文所述對(duì)大家MySQL數(shù)據(jù)庫(kù)計(jì)有所幫助。
- MySQL查詢數(shù)據(jù)庫(kù)所有表名以及表結(jié)構(gòu)其注釋(小白專用)
- mysql將數(shù)據(jù)庫(kù)中所有表結(jié)構(gòu)和數(shù)據(jù)導(dǎo)入到另一個(gè)庫(kù)的方法(親測(cè)有效)
- MySQL數(shù)據(jù)庫(kù)線上修改表結(jié)構(gòu)的方法
- 利用Python批量導(dǎo)出mysql數(shù)據(jù)庫(kù)表結(jié)構(gòu)的操作實(shí)例
- mysql如何比對(duì)兩個(gè)數(shù)據(jù)庫(kù)表結(jié)構(gòu)的方法
- 詳解 linux mysqldump 導(dǎo)出數(shù)據(jù)庫(kù)、數(shù)據(jù)、表結(jié)構(gòu)
- mysql如何將數(shù)據(jù)庫(kù)中的所有表結(jié)構(gòu)和數(shù)據(jù)導(dǎo)入到另一個(gè)庫(kù)
相關(guān)文章
SUSE Linux下通過(guò)RPM方式卸載MySQL 5過(guò)程筆記
這篇文章主要介紹了SUSE Linux下通過(guò)RPM方式卸載MySQL 5過(guò)程筆記,本文針對(duì)使用rpm方式安裝的mysql,需要的朋友可以參考下2014-09-09
Mysql數(shù)據(jù)庫(kù)delete操作沒(méi)報(bào)錯(cuò)卻刪除不了數(shù)據(jù)的解決
本文主要介紹了Mysql數(shù)據(jù)庫(kù)delete操作沒(méi)報(bào)錯(cuò)卻刪除不了數(shù)據(jù)的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
使用FriendFeed來(lái)提升MySQL性能的方法
這篇文章主要介紹了使用FriendFeed來(lái)提升MySQL性能的方法,用其來(lái)存儲(chǔ)無(wú)模式的數(shù)據(jù)從而能夠維護(hù)索引,需要的朋友可以參考下2015-06-06
Windows10系統(tǒng)下Mysql8.0.13忘記root密碼的操作方法
這篇文章主要給大家介紹了關(guān)于Windows10系統(tǒng)下Mysql8.0.13忘記root密碼的操作方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01

