我将始终向我的表中的特定列输入20个字符的内容。
我需要这一列是唯一的。
如果我将此列设置为varchar(255),而不是varchar(20),是否会影响SELECT查询的速度?
(输入的数据将始终为20个字符)
在选择查询中,缩短varchar的长度并不能提高速度,但可以增加插入新记录的速度。
char(20)
,因为这样可以节省空间并略微提高速度。Value CHAR(4) Storage Required VARCHAR(4) Storage Required
'' ' ' 4 bytes '' 1 byte
'ab' 'ab ' 4 bytes 'ab' 3 bytes
'abcd' 'abcd' 4 bytes 'abcd' 5 bytes
'abcdefgh' 'abcd' 4 bytes 'abcd' 5 bytes
最好的做法是根据需要分配足够的空间,因为MySQL经常分配固定大小的内存块来保存值。
这对于排序或使用内存临时表的操作来说是不好的。对于使用磁盘临时表的文件排序也是一样。书籍《高性能MySQL》提供了更多关于这些问题的信息。我建议阅读它。