SQL:值为-1,0和1的数据类型选择

p.c*_*ell 1 sql t-sql sql-server types

考虑一个表,其作用是存储对象的评级.这里感兴趣的列是名为RATING的列.要存储的有效值范围是:

  • 1
  • 0
  • -1

第一个想法是存储为tinyint smallint.这将存储每行两个字节的一个字节.鉴于tinyint的0到255范围的小范围-32768到32767,它在这里适用吗?还有其他数据类型更合适吗?对于表和数据库的预期大小,所占用的空间是微不足道的.用户界面将负责确保通过枚举选择这三个值.

问题:您是否可以建议较小的存储容量或任何聪明的设置来存储这三个值中的一个而不会牺牲任何易于理解的东西?

其他考虑:

  • 存储空间不是一个非常大的问题
  • 此值将相加以获得总评级
  • 这可能是微优化的一个例子
  • SQL Server 2008

Phi*_*ley 5

smallint是(ahem)最小的整数数据类型,可以准确地跟踪-1,0和1.如果空间不是问题,并且你说它不是,那么使用smallint.任何其他东西都会过于聪明,需要的实施工作量远远超过必要的水平.