我应该优先使用哪种数据类型来存储sql server中的标志字段,bit(如果我只有0,1和null),tinyint,smallint或int用于不能容纳到位的标志?它会影响我的查询性能吗?
答案 0 :(得分:4)
使用位数据类型,如果为true,则设置为1,或者如果为0,则设置为False,对于位值查询要小得多,速度要快得多如果表中有8位或更少的位列,则可以将列保存为1字节,我认为如果你有8个以上,然后SQL Server使用2个字节列,比你可能拥有的任何其他选项小很多,tinyint,smallint和int都需要更多的空间然后一个位列和查询更大的数据类型意味着更多的时间来查询数据。
我的建议
我的建议是使用位列,因为它需要更少的空间来存储它,查询可以更快地执行。
答案 1 :(得分:1)
bit
它是一个布尔值,因此它只有1或0,并且不需要存储整个字节。另外,你可以在桌面设计上让它可以为空。
答案 2 :(得分:1)
我得到了我正在寻找的答案,我们应该考虑使用足够的最小数据类型来存储所需的标志值。这与数据库的性能有关,因为存储大小近来并不是一个大问题。
查看此link以获取更多见解。
根据此链接考虑如何使用磁盘空间以外的资源,请考虑缓冲池和存储带宽。最极端的是CPU缓存和内存总线带宽,以及SQL Server的工作原理。