【发布时间】:2011-11-08 04:41:36
【问题描述】:
我使用的是 SQL SERVER 2008,我的各种表中有许多 INT、SMALLINT 字段,而且我知道它们都将为 0 或大于 0,即我可以将它们设为无符号。
是否有一种创建/使用无符号数据类型的简单方法,或者我必须创建类型->制定规则->使用创建的类型;如下文所述?
http://www.julian-kuiters.id.au/article.php/sqlserver2005-unsigned-integer
如果这是在 SQL 中使用 Unsigned 的唯一方法,那么使用它有什么缺点/缺点吗?
【问题讨论】:
-
如果原因是您只想确保该值大于等于零,那么您可以在列上使用简单的
CHECK约束。 -
通过Unsigned,我们可以更好地使用内存/存储。原因不是确保该值大于 0 或不。纯粹是为了节省内存。
-
看起来你正在尝试优化一些你不应该做的事情。让 DBMS 管理它的内存,它很擅长。
-
我的表中有十万行,并且有一列的值将在 50000-60000 的范围内,将其作为 unsigned smallint 不是一个好主意。另外,我还有一种情况,可以使用 Unsigned Int 代替 Bigint。
-
只需使用
integer并添加CHECK约束或触发器来检查值。
标签: sql sql-server-2008 sqldatatypes unsigned-integer