我在某些表格中有一些字段只能包含0 to 9
的值,而其他字段只能包含0 or 1
。
根据您的体验,最好将其与TINYINT
或VARCHAR(1)
一起存储?
作为内存使用,识别它们的速度等等......
答案 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个字节作为长度,然后使用另一个字节作为实际数据。这样一来,查询中使用的数据量以及所有相关索引等的数据量就会翻倍。