mysql的schema與資料類型最佳化分析

來源:互聯網
上載者:User

標籤:ar   使用   sp   資料   bs   amp   時間   sql   c   

Schema與資料類型最佳化:

    

1.選擇最佳化的資料類型

更小的通常更好:一般情況下,盡量使用可以正確儲存資料的最小資料類型

如:只需存0-200,tinyint unsigned更好。

簡單就好:如:整型比字串操作代價更低,應該使用mysql內建類型而不是字串來儲存日期和時間。

盡量避免NULL:通常情況下最好指定列為NOT NULL,除非真的要儲存NULL值。如:查詢中包含可為NULL的列對mysql來說更難最佳化。


2. 選擇類型範圍

如DATETIME和TIMESTAMP列都可以儲存相同類型的資料(時間和日期,精確到秒),但TIMESTAMP只使用

DATETIME一半的儲存空間,並且會根據時區變化,具有特殊的自動更新能力。


3.整數類型

有兩種類型的數字:整數和實數

如果儲存整數,可使用TINYINT(8),SMALLINT(16),MEDIUMINT(24),INT(32),BIGINT(64).

整數類型有可選的UNSIGNED屬性,表示不允許負值,可使正數上限提高一倍。如TINYINT UNSIGN可以儲存的範圍是0~255.

有符號和無符號使用相同的儲存空間,並具有相同的效能。


4.實數類型:實數是帶有小數部分的數字。


5.字串類型:VARCHAR和CHAR是最主要的字串類型。

VARCHAR:用於可變長字串,比定長更省空間,因為它僅使用必要空間。

適合使用VARCHAR的情況:字串列的最大長度比平均長度大很多;列的更新很少;

使用了UTF-8字元集

CHAR:是定長的,適合儲存短的字串,或所有值都接近同一個長度。如:儲存密碼的MD5值,

因為這是一個定長的值。對於經常變更的資料,CHAR也比VARCHAR好,因為定長類型不容易產生片段。

對於非常短的列,CHAR比VARCHAR在儲存空間上也更有效率。如:用CHAR(1)儲存只有N和Y的值只需一個位元組,

但用VARCHAR(1)卻要兩個位元組,因為還有一個記錄長度的額外位元組。

使用varhar(5)和和char(5)儲存‘hello’的空間開銷是一樣的,更長的列會消耗更多的記憶體。 


mysql的schema與資料類型最佳化分析

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.