為表中的字段選擇合適的資料型別
當乙個列可以選擇多種資料型別時,應該優先考慮數字型別,其次是日期或者二進位制型別,最後是字元型別。對於相同級別的資料型別,應該優先選擇占用空間小的資料型別。
整數型別:
實數型別:
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...