tinyint或varchar(1)?

时间:2011-04-23 15:06:51

标签: mysql types

我在某些表格中有一些字段只能包含0 to 9的值,而其他字段只能包含0 or 1

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

作为内存使用,识别它们的速度等等......

3 个答案:

答案 0 :(得分:9)

这取决于您将如何使用值:字符串或数字。如果您打算将它们用作数字,TINYINT(1)肯定会更好,因为mysql不需要进行不必要的转换。对于单字符字符串,您可以使用CHAR(1)

答案 1 :(得分:2)

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

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

否则,试着向前看。是否有可能会出现新的价值观?那么范围是什么?

答案 2 :(得分:0)

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