我将永远将20个字符的内容输入表格中的特定列。
我需要此列是唯一的。
如果我将此列设置为varchar(255)而不是varchar(20),那么SELECT查询是否会有任何速度差异?
(输入的数据总是20个字符)
答案 0 :(得分:5)
如果输入的数据总是 20个字符,那么为什么不考虑使用 char(20)。使用varchar(20)将使用20个字节来存储字符,使用1个字节来存储长度。所以如果有100万条记录,就会浪费100万字节。
就varchar(20)和varchar(255)之间的速度而言,我不认为选择其中一个可能非常困难,它们都将使用21个字节,我没有看到任何显着的性能一个人的利益或损失超过他人。
答案 1 :(得分:3)
如果它只能是20,你为什么要指定255?如果它总是20,那么即使char(20)也会更好。
答案 2 :(得分:2)
在选择查询中,您不会通过减少varchar的长度来提高速度,但可以提高插入新记录的速度
答案 3 :(得分:1)
如果您非常确定所有值都是20 chars
并且它们将是固定长度,那么请使用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
above table is taken from MySQL Manual我建议你阅读该主题的评论(示例下方)
Kirby Wirby于2007年4月9日晚上8:33发表
答案 4 :(得分:0)
最好的事情是分配尽可能多的空间,因为MySQL通常会分配固定大小的内存块来保存内部值。
这对排序或使用内存临时表的操作不利。使用磁盘临时表的 filesorts 也会发生同样的情况。书高性能MySQL 提供了有关这些问题的更多信息。我建议你阅读。