varchar类型用于存储可变长字符串,是最常见的字符串数据类型。使用varchar(5)和varchar(200)存储 ‘hello’所消耗的空间是一样的,那应该怎么选择呢?答案是,选择更短的列。
更长的列会消耗更多的内存,因为MySQL通常会分配固定大小的内存块来保存内部值,尤其是使用内存临时表进行排序或操作时会特别糟糕,在利用磁盘临时表进行排序时也同样糟糕,所以最好的策略是只分配真正需要的空间。
为标识列选择数据类型时,一旦选定了一种类型,要确保在所有关联表中都使用同样的类型。包括像UNSIGNED这样的属性,混用不同的类型可能导致性能问题,即使没有性能影响,在比较操作时隐式类型转换也可能导致很难发现的错误。