选择合适的数据类型:
char和varchar:char是固定长度的字符类型,varchar是可变长度的字符类型,因此char检索起来速度更快。char由于是固定长度的在检索的时候删除了尾部的空格。
text和blob:blob可以用来存放二进制数据(照片视频等)。
用text和blob时需要注意的问题有:
在执行大量删除操作的时候会在数据表中留下很大的空洞,以后填入这些空洞的记录在插入的性能上会有影响。因此需要定期使用optimize table指令对碎片进行整理。
可以使用合成的索引(根据文本内容建立一个散列值)来提高文本字段的查询性能,具体的散列方式有SHA1()、MD5()、CRC32()等,但切记其不支持模糊查询、只能用于精确匹配。
如果需要对blob字段进行模糊查询,Mysql提供了前缀索引(只为字段的前n列创建索引)。
float和decimal:
float是浮点数、decimal是定点数。在存储、比较和运算的时候应该尽量避免使用浮点数,浮点数在运算过程中可能会出现各种不确定因素。
字符集:
字符集有三个等级:数据库级别、表级别、字段级别。