mysql優化(一) 資料型別優化

2021-10-06 01:55:42 字數 1390 閱讀 6945

mysql支援的資料型別非常多,選擇正確的型別對獲取高效能至關重要。

更小的通常更好

一般情況下使用正確儲存資料的最小資料型別,因為它們占取更小的磁碟,記憶體和cpu快取

簡單就好

例如整型比字元操作代價更低,如採用mysql內建型別(date,time,datatime)儲存時間和日期而不是字串,另乙個是用整型儲存ip位址。

盡量避免null

通常情況下最好使用 not null 儲存,除非真的需要 null:

不同子資料型別的特殊行為

例如,datetime 和 timesamp 可以儲存相同型別的資料,時間和日期精確到秒,然而 timestamp 只使用 datetime 一半的儲存空間,並且會根據時區變化擁有自動更新能力。

數字的型別有兩種:整數,實數。整數有下列幾種型別:tinyint,smallint,mediumint,int,bigint。分別使用8,16,24,32,64位儲存空間,它們可以儲存的值的範圍是 -2 的 n-1 次方到 2 的 n-1 次方減 1 。其中 n 是 儲存空間位數。

整數型別有可選的unsigned屬性,表示不允許為負值,同時整數上線提高一倍。例如 tinyint 的儲存範圍是 -128 ~ 127 ,而 tinyint unsigned 的儲存範圍是 0 ~ 255。有無符號都使用相同的儲存空間,有相同的效能。

mysql可以指定整數寬度,如 int(20) ,但它實際上是沒有用的,它不會限定取值的範圍,只是規定了 mysql 的互動工具(如 mysql命令列等)顯示字元的個數。對於儲存和計算 int(1) 和 int(20) 是沒有區別的。

實數是即帶有小數的數字,分為不精確型別 float 和 double 進行近似運算,精確型別 deciaml 進行精確運算。

deciaml 可以指定精度:deciaml(a,b) 中 a代表該數字最多允許的位數,位數是小數部分和整數部分的位數之和,b表示小數部分的最大位數,b<=a。例如 deciaml(5,4) 代表最多只能有5位,整數部分最對只能有1位,小數部分最多只能有4位。mysql5.0及更高版本將數字打包儲存到乙個二進位制字串裡(每4個位元組存9個數字)。

mysql 5.0 及更高版本 deciaml 型別最多允許 65個數字。

從 mysql4.1 開始,每個字串可以自定義字符集和排列順序,或者校對規則。將會很大程度影響效能。

varchar

char 注意

使用 varchar(5) 和 varchar(200) 儲存 'hello』的空間開銷是一樣的,但是更長的列或消耗更多的記憶體。

為了儲存很大的資料而設計的字串資料型別,分別採用二進位制和字元方式儲存。blob 採用二進位制資料沒有排序規則和字符集,而 text 有。

mysql 不能將 blob 和 text 的全部長度字串作為索引,只能使用前面一小部分。

MySQL資料型別優化

mysql資料型別眾多,選擇正確的資料型別對於獲得高效能至關重要。遵從以下幾條原則有助力做出更好的選擇。1 更小的資料型別。更小的資料型別通常更快,因為它們占用更少的磁碟 記憶體和cpu快取,並且處理時需要的cpu週期也更少。但也要確保自己沒有低估需要的儲存範圍。2 簡單的資料型別。簡單的資料型別通...

MYSQL資料型別優化

mysql支援的資料型別很多,選擇正確的資料型別對於獲得高效能至關重要,不管儲存哪種資料型別,下面幾個簡單原則都有助於我們做出更好的選擇。1 更小的通常更好,更小的資料型別通常更快,因為它們占用更少的磁碟,記憶體和cpu快取,並且處理時需要的cpu週期也更少。但是要確保不會低估要儲存值的範圍 2 簡...

mysql 資料型別優化

1 更小的通常更好 更小的資料型別,更快速,因為占用更小的磁碟,cpu,快取 只要保證你的資料最大值不超過你的資料型別範圍即可 2 簡單就好 簡單的資料型別操作需要更少的cpu週期,整型比字元操作代價更低 例如時間型別用date,datetime等,不用字串 還有ip位址用整型等 3 盡量避免nul...