資料庫優化 三 資料型別的選擇

2021-09-21 17:42:26 字數 2470 閱讀 3486

為表中的字段選擇合適的資料型別

當乙個列可以選擇多種資料型別時,應該優先考慮數字型別,其次是日期或者二進位制型別,最後是字元型別。對於相同級別的資料型別,應該優先選擇占用空間小的資料型別。

整數型別:

實數型別:

float、double、decimal(精確)

m:數值的總位數。 通俗點講,就是看有多少個數字,比如,5.6789,m就是5

d:小數點後面能保留幾位。 比如上面的5.6789 ,d就是4。 這只是舉乙個例子,來說明m,d是什麼,實際是先有m,d的,然後在來控制數值,而不是更具數值來確定m,d。不單單就mecimal有m,d這兩個引數,float 和 double 度有。

都是用來表示我們所說的小數的也就是浮點數,但是三種的精度不一樣,也就是後面顯示的位數不一樣,

區別

區別一:

float顯示後面的小數點位大概在40多位,

double能顯示的就是300多位了,不是乙個層次上的,

decimal這個小數點後面能顯示的位數跟double差不多,

區別二:

float和double在不指定精度時,也就是不用(m,d),缺省會按照實際的精度,也就是你寫多少就是多少,而decimal如不指定精度預設為(10,0),也就是如果不指定精度,插入數值56.89,在資料庫中儲存的就是57。所以一般使用decimal時就會指定精度,而使用float和double就不用。

區別三:

浮點數相對與定點數(decimal)的優點就是在長度一定的情況下,浮點數能夠表示更大的資料範圍,但是缺點是會引起精度問題

對精度要求比較高的時候,比如貨幣、科學資料等,使用decimal的型別比較好。其他的時候,看你要存放的資料的大小而定了,一般使用double。並且在使用浮點數時需要注意,盡量避免做浮點數的比較,比如加、減,誰大誰小,這樣的操作,會引起精度缺失。相信在一些程式語言中,遇到過float精度丟失的問題。

字串型別:

varchar型別的儲存特點

varchar用於儲存變長字串,只占用必要的儲存空間

列的最長度小於255則只占用乙個額外自家用於記錄字串長度

列的最大長度大於255則要占用兩個額外位元組用於記錄字串長度

問題:使用最小的符合需求的長度

varchar(5)和varchar(200)儲存'mysql'字串效能不同--消耗更多記憶體,記憶體是一樣的

varcher適用場景

字串的最大長度比平均長度大很多

字串列很少被更新

使用了多位元組字元儲存字串

char儲存特點:

char型別是定長的

字串儲存在char型別的列中會刪除末尾的空格

char型別的最大寬度是255

適用場景

char型別適合儲存所長度近似的值

char型別適合儲存短字串

char型別適合儲存經常更新的字串列

如何儲存日期資料

datatime型別 定義寬度設定微妙 與時區無關佔8個儲存空間

以yyyy-mm-dd hh:mm:ss[.fraction]

範圍:1000-01-01 00:00:00 到9999-12-31 23:59:59

timestamp型別

儲存了格林尼治實踐2023年1月1日到當前時間的秒事

以yyyy-mm-dd hh:mm:ss格式顯示,占用4個位元組

1970-01-01到2038-01-19

依賴顯示與所制定的時區

在行的資料修改時可以自動修改timestamp列的值

date型別和time型別

只需要儲存日期型別

data型別有點

1占用位元組數比使用字串、datatime、int要少,只需要3個位元組

2.可以使用日期函式進行計算

1000-01-01到9999-12-31

time是hh:mm:ss 長度改變微妙

注意事項:

不要使用字串來儲存日期時間資料

占用空間少

日期時間型別在進行查詢過濾時可以利用日期來進行對比    

日期時間型別還有豐富的處理函式,可以方便的對時期來處理資料

使用int儲存日期時間不如使用timestatamp型別

innodb:為表中每個列選擇合適的型別

主鍵應該可能的小

主鍵應該是順序增長的,增加資料的插入效率

innodb的主鍵和業務主鍵可以不同 

mysql資料庫優化 選擇合適的資料型別

一 選擇資料型別的基本原則 1 myisam 資料表,最好使用固定長度的資料列代替可變長度資料列 2 innodb 建議使用varchar型別 char平均占用的空間多於varchar,因此使用varchar來最小化需要處理的資料行的儲存總量和i o是比較好的 二 資料列選擇 1 char 與 va...

資料庫如何優化資料型別

應該這樣定義表,它既能儲存所有可能值,同時在磁碟上占用的空間又最小。如果表占用的儲存空間越 小,則 向磁碟寫入或讀取的資料就越少,查詢起來就越快 在處理查詢時,磁碟上的內容會被載入到主記憶體中。所以,表越小,占用的主存空間就越小 被索引占用的空間就越小。如何操作 如果要儲存員工編號,而其可能的最大值...

資料庫資料型別

一 string型別 1 char n 固定長度,最多8000字元 2 varchar n 可變長度,最多8000字元 3 varchar max 可變長度,最多1073741824字元 4 text 可變長度,最多2gb文字資料 5 nchar 固定長度的unicode,最多4000字元 6 nv...