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.注意浮点数中的一些特殊值的处理。