Mysql選擇合適的資料型別

2022-07-30 20:33:19 字數 1213 閱讀 3125

一般情況下,由於char是固定長度的,所以它的處理速度比varchar要快的多,但是器缺點是浪費儲存空間,程式需要對行尾空格進行處理,所以對於那些長度變化不大並且對查詢速度有較高要求的詩句可以考慮使用char型別儲存。

mysql中不同引擎對varchar和插入的使用原則:

myisam:使用固定長度

memory:不管設定是varchar還是char,最後都是char來處理。

innodb: 使用varchar。innodb內部沒有區分兩者的區別,所有的資料行都是使用指向資料列值的頭指標。因此儲存空間才是主要的問題,所以使用varchar更加省空間和減緩i/o。

兩者都是用來儲存大的字串。text儲存文字字串,blob用於儲存二進位制的字串,比如。

blob和text引起的效能問題:特別是在大量執行刪除操作時。

刪除操作會在資料表中留下很大的"空洞

",以後填寫這些"空洞

"的記錄在插入效能上會有影響。事實上,刪除操作,只是在表中清空了記錄,但是資料庫的儲存檔案依然沒有變小。為了提示性能,要定期的使用optimize table 進行碎片整理。

使用合成的索引值,即利用某個column的md5等演算法生成索引,提示大文字的查詢速度

這種查詢,只適用於精確的查詢。

比如:使用cotent的md5值作為索引

create table t (id int(4), content text, hash_val varchar(40));

insert into t values(1,repeat('wxl',200),md5(content));

select * from t where hash_val=md5(repeat('wxl',200));

把大文字單獨存在一張表裡;

減少主表的碎片,可以使select * 這種操作返回更少的資料量,減少網路開銷。

用於儲存帶有小數的資料型別。

浮點數存在誤差的問題,四捨五入

與錢有關等對精度敏感的資料,應當使用定點數decimal來表示。

程式設計中也要考慮浮點數帶來的問題。盡量避免做浮點數的比較

根據需求,選擇占用空間最少的型別儲存。

記錄年月日時分秒且記錄的年份比較久遠,那麼使用datetime,而不使用timestamp,因為timestamp能記錄日期的日期範圍比timestamp小。

如果記錄時間要隨著使用者不同的時區做相應的變化時,選擇timestamp

為Mysql選擇合適的資料型別

前提 使用適合儲存引擎。選擇原則 根據選定的儲存引擎,確定如何選擇合適的資料型別。下面的選擇方法按儲存引擎分類 對於innodb資料表,內部的行儲存格式沒有區分固定長度和可變長度列 所有資料行都使用指向資料列值的頭指標 因此在本質上,使用固定長度的char列不一定比使用可變長度varchar列簡單。...

選擇合適的資料型別

選擇合適的資料型別 char和varchar char是固定長度的字元型別,varchar是可變長度的字元型別,因此char檢索起來速度更快。char由於是固定長度的在檢索的時候刪除了尾部的空格。用text和blob時需要注意的問題有 在執行大量刪除操作的時候會在資料表中留下很大的空洞,以後填入這些...

MySQL學習筆記(六) 選擇合適的資料型別

char和varchar型別相似,都用來儲存字串,但是它們儲存和檢索的方式不同。char屬於固定長度的字元型別,而varchar屬於可變長度的字元型別。由於char是固定長度的,所以它的處理速度比varchar快得多,但是其缺點是浪費儲存空間,程式需要對行尾空格進行處理,所以對那些長度變化不大並且查...