tinyint或varchar(1)?

问题描述 投票:5回答:3

我在某些表中有一些字段,这些字段只能包含0 to 9中的值,而另一些字段可以包含0 or 1

根据您的经验,最好将其与TINYINTVARCHAR(1)一起存储吗?

作为内存使用量,加快识别它们的速度,依此类推...

mysql types
3个回答
10
投票

取决于您将如何使用值:作为字符串还是数字。如果要将它们用作数字,则TINYINT(1)绝对更好,因为mysql不需要进行不必要的转换。对于1个字符的字符串,可以使用CHAR(1)


2
投票

尽管我会选择CHAR(1)而不是varchar,但这并不重要。

如果将值用作数字,即要添加或减去它们,请使用TinyInt。

否则,请尝试向前看。有机会出现新的价值吗?那范围是多少?


0
投票

如果可以使用TINYINT(1),则最好使用它,因为VARCHAR(1)每行占用的空间量是原来的两倍; TINYINT(1)每行仅使用1个字节,而VARCHAR(1)使用1个字节作为长度,然后使用另一个字节作为实际数据。这会使查询中使用的数据量以及所有关联的索引等增加一倍。

© www.soinside.com 2019 - 2024. All rights reserved.