我什么时候应该对列使用 UNSIGNED 属性?
When should I use UNSIGNED attribute for a column exactly?
根据文档,UNSIGNED
列不接受负数。那么这是否意味着我应该对始终包含正值或空值的每一列使用 UNSIGNED
属性?
假设这个 table 结构:
// vote
+----+---------+---------+-------+------------+----------+
| id | id_post | id_user | value | code_table | time |
+----+---------+---------+-------+------------+----------+
在上面的 table 中,除 value
列外,所有列均为空或正数。那么我应该为除 value
列之外的所有列设置 UNSIGNED
属性吗?我对吗?或者使用 UNSIGNED
属性是基于另一个参数?
如果您确定除 value
列之外的所有列都将包含正值,那么是的,您应该将其设置为 UNSIGNED
。使用 UNSIGNED 属性仅基于此参数作为您在列中期望的值。还要注意 UNSIGNED 的范围从 0 到 n wheras SIGNED 的范围从大约 -n/2 到 n/2.
在内存方面,有符号和无符号类型占用相同的内存space (INT 为 4 个字节)。
根据您将存储在列中的值使用 UNSIGNED
属性。
例如,ID 通常是无符号值(这只是一种约定,没有什么可以阻止您使用负 ID 值)。
另一方面,age
列将始终包含正值,而 UNSIGNED
值非常适合它。
根据文档,UNSIGNED
列不接受负数。那么这是否意味着我应该对始终包含正值或空值的每一列使用 UNSIGNED
属性?
假设这个 table 结构:
// vote
+----+---------+---------+-------+------------+----------+
| id | id_post | id_user | value | code_table | time |
+----+---------+---------+-------+------------+----------+
在上面的 table 中,除 value
列外,所有列均为空或正数。那么我应该为除 value
列之外的所有列设置 UNSIGNED
属性吗?我对吗?或者使用 UNSIGNED
属性是基于另一个参数?
如果您确定除 value
列之外的所有列都将包含正值,那么是的,您应该将其设置为 UNSIGNED
。使用 UNSIGNED 属性仅基于此参数作为您在列中期望的值。还要注意 UNSIGNED 的范围从 0 到 n wheras SIGNED 的范围从大约 -n/2 到 n/2.
在内存方面,有符号和无符号类型占用相同的内存space (INT 为 4 个字节)。
根据您将存储在列中的值使用 UNSIGNED
属性。
例如,ID 通常是无符号值(这只是一种约定,没有什么可以阻止您使用负 ID 值)。
另一方面,age
列将始终包含正值,而 UNSIGNED
值非常适合它。