Mysql 數(shù)據(jù)類型優(yōu)化的幾個(gè)簡(jiǎn)單原則

1. 更小的通常更好

一般情況下,應(yīng)該盡量使用可以正確存儲(chǔ)數(shù)據(jù)的最小數(shù)據(jù)類型。例如只需要存儲(chǔ) 0-200 的數(shù)字,tinyint unsigned 更好。但是要確保沒(méi)有低估需要存儲(chǔ)的值的范圍,否則在數(shù)據(jù)表中修改數(shù)據(jù)類型的范圍會(huì)比較麻煩。

2. 簡(jiǎn)單就好

簡(jiǎn)單數(shù)據(jù)類型的操作通常需要更少的 CPU 周期。例如,整數(shù)比字符操作代價(jià)更低,因?yàn)樽址托?duì)規(guī)則使字符比較比整型更復(fù)雜。使用 Mysql 內(nèi)建的類型而不是字符串來(lái)存儲(chǔ)日期和時(shí)間。

3.盡量避免NULL

Mysql 默認(rèn)列的屬性是 NULL,通常情況下最好制定列為 NOT NULL,除非真的需要存儲(chǔ) NULL 值。如果查詢中包含可為 NULL 的列,對(duì) Mysql 來(lái)說(shuō)更難優(yōu)化,因?yàn)榭蔀?NULL 的列使得索引、索引統(tǒng)計(jì)和值比較都更復(fù)雜??蔀?NULL 的列會(huì)使用更多的存儲(chǔ)空間,在 Mysql 里也需要特殊處理。當(dāng)可為 NULL 的列被索引時(shí),每個(gè)索引記錄需要一個(gè)額外的字節(jié),在 MyISAM 引擎中甚至還可能導(dǎo)致固定大小的索引變成可變大小的索引。通常把可為 NULL 的列改為 NOT NULL 帶來(lái)的性能提升比較小,但是,如果計(jì)劃在列上建立索引,就應(yīng)該盡量避免設(shè)計(jì)成可為 NULL 的列。

文章同步發(fā)布在我的個(gè)人博客中,傳送門(mén)Hesunfly Blog

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容