最佳的 varchar 字段大小

30 浏览
0 Comments

最佳的 varchar 字段大小

我正在设计一个数据库,用来存储不同大小的JSON字符串。我考虑使用不同的表(每个表有两个列,'id'和'data')来存储不同大小的字符串(从tinytext到bigtext)。在这种情况下,每个表都会被搜索,从包含最小字符串大小的表开始。

我还考虑使用一个只有一个字符串大小的单一表,并使用多行来存储大型JSON字符串。

...或者我可以只创建一个具有大VARCHAR大小的表,以节省开发时间。

我正在围绕两个设计要点展开工作:

在某些情况下,MySQL会将小片数据“存储在行内”,以提高性能。这是什么意思,我如何利用这一点?

在某些情况下,MySQL会将VARCHAR处理为其最大可能的大小。什么时候会发生这种情况,我如何避免它?

0
0 Comments

为什么历史上人们在数据库字段大小上使用255而不是256?

在历史上,人们在数据库中使用255而不是256的原因是为了避免发生错误。尽管计算机是基于二进制的,每个字节可以表示256个不同的值,但在某些情况下,数据库系统需要使用1个字节来存储其他信息,例如字符串的长度或编码方式。因此,为了确保所有数据都可以正确地存储和检索,人们通常将字段的最大大小设置为255而不是256。

然而,如果你正在使用PHP并尝试插入超过1000个字符的字符串,你需要在插入之前在PHP端将其截断到最大列大小,否则会出现错误。这是因为在PHP中,字符串的最大长度默认为1000个字符。如果你尝试插入超过这个限制的字符串,PHP将引发一个错误。因此,在插入之前,你需要手动将字符串截断到数据库字段的最大大小。

总结起来,历史上人们在数据库字段大小上使用255而不是256的原因是为了避免错误。如果你使用PHP并尝试插入超过1000个字符的字符串,你需要在插入之前将其截断到最大列大小,以避免错误。

0
0 Comments

问题:Varchar的最佳列大小是多少?

原因:从数据库的角度来看,varchar没有特定的“好”长度。然而,尽量保持最大行大小在8kb以内,包括非聚集索引。这样你就可以避免MySQL将数据存储在行外,从而影响性能。

解决方法:如果我的数据库设置为使用UTF-8编码,那么最大长度大约为8000个ASCII字符或大约1200个字符,在最坏的情况下。

为了存储Varchar数据,服务器使用的是字符数+1字节,而对于Nvarchar,则使用字符数*2+2字节。请参阅Dev.MySQL上的专门文章。

0