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.注意浮點數中的一些特殊值的處理。