MySQL數據類型注意事項

1. TEXT和BLOB

區別:blob可以保存二進制數據,比如圖片和音樂。而text只可以保存字符數據。


使用text和blob時,在進行大量的刪除操作時,會在數據表中留下很大的空洞。建議定期使用OPTIMIZE TABLE功能對這類表進行碎片整理。

可以使用合成的索引來提高大文本字段(text和blob)的查詢性能。

合成索引:添加一個列,用MD5()函數生成散列值,用散列值標識符查找速度會提高很多。但是只可以用於精度匹配,減少I/O,提高效率。

例子

創建表
create table test(id varchar(100),context  blog, hash_value varchar(40)); 
插入數據

insert into test values (1, repeat('shenzhen',2), md5(context))
查找
select  from test where hash_value=md5(repeat('shenzhen',2)); 


如需要進行模糊,則提供了前綴索引 
create index idx_blob on test(context(100)); 

模糊查詢

select * from test where context like 'shenzhen%' 

注意%不能放前面,否則索引不會被使用


2. 浮點數和定點數應用要考慮的原則

1.浮點數存在誤差。

2.對貨幣等對精度敏感的數據,要用定點數表示或存儲。

3.在編程中,如果用到浮點數,要特別注意誤差問題,儘量避免浮點數的比較。

4.注意浮點數中的一些特殊值的處理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章