華為云計(jì)算 云知識(shí) 數(shù)據(jù)庫(kù)中字段的物理化
數(shù)據(jù)庫(kù)中字段的物理化

數(shù)據(jù)庫(kù) 設(shè)計(jì)中,字段的物理化要選擇合適的類型,考慮以下因素:

1. 盡量使用短字段的數(shù)據(jù)類型

長(zhǎng)度較短的數(shù)據(jù)類型不僅可以減小數(shù)據(jù)文件的大小,提升IO性能;同時(shí)也可以減小相關(guān)計(jì)算時(shí)的內(nèi)存消耗,提升計(jì)算性能。

比如對(duì)于整型數(shù)據(jù),如果可以用smallint就盡量不用int,如果可以用int就盡量不用bigint。

2. 使用一致的數(shù)據(jù)類型

表關(guān)聯(lián)列盡量使用相同的數(shù)據(jù)類型。如果表關(guān)聯(lián)列數(shù)據(jù)類型不同,數(shù)據(jù)庫(kù)必須動(dòng)態(tài)地轉(zhuǎn)化為相同的數(shù)據(jù)類型進(jìn)行比較,這種轉(zhuǎn)換會(huì)帶來(lái)一定的性能消耗。

3. 選擇高效數(shù)據(jù)類型。

4. 字段的約束

DEFAULT:如果能夠從業(yè)務(wù)層面補(bǔ)全字段值,就不建議使用DEFAULT約束,避免數(shù)據(jù)加載時(shí)產(chǎn)生不符合預(yù)期的結(jié)果。

NOT NULL:給明確不存在NULL值的字段加上NOT NULL約束。

唯一約束/主鍵約束:主鍵 = 唯一 + NOT NULL。如果條件允許,就增加。

檢查約束:因?yàn)閷?duì)于數(shù)據(jù)質(zhì)量提出了要求,不滿足約束的數(shù)據(jù)在插入數(shù)據(jù)表會(huì)導(dǎo)致SQL失敗。