Database smallint总是有用吗?

Database smallint总是有用吗?,database,Database,您认为现在,smallint数据库类型仍然有用,还是像32/64位CPU上的短内存(最好使用int)是的 如果不需要将数字存储在smallint范围之外,那么使用int只会不必要地占用空间(smallint为4字节,而smallint为2字节)。根据经验,选择最适合其包含的数据范围的数据类型。同样,在SQL Server世界中,始终使用VARCHAR(MAX)而不是例如VARCHAR(100)是一个好主意吗?不。我认为从性能的角度看,它不会有太大的区别,但除非您能够绝对保证smallint对于您

您认为现在,smallint数据库类型仍然有用,还是像32/64位CPU上的短内存(最好使用int

是的


如果不需要将数字存储在smallint范围之外,那么使用int只会不必要地占用空间(smallint为4字节,而smallint为2字节)。根据经验,选择最适合其包含的数据范围的数据类型。同样,在SQL Server世界中,始终使用VARCHAR(MAX)而不是例如VARCHAR(100)是一个好主意吗?不。

我认为从性能的角度看,它不会有太大的区别,但除非您能够绝对保证smallint对于您的数据来说永远不会太小,使用int:空间很便宜,而字段中的数据溢出错误则不便宜。

我认为这一切都取决于RDBMS和处理器体系结构的底层实现。根据处理器的特定体系结构,不同的基本类型可以进行不同的处理,具体取决于该实现(处理器包含哪些功能单元,用于处理时钟周期数较低的特定情况)。任何特定“类型”的位宽度由proc体系结构决定,尽管总线宽度为32位(或64位),但在数据类型中不需要仅使用32位或其倍数。据我所知,对2字节类型进行操作将需要更多的处理时间,因为它需要“屏蔽结果”,但可以节省内存(优化可能需要减少内存使用或CPU使用或磁盘访问,这取决于您的瓶颈,我知道内存非常便宜,牺牲成本几乎总是更好的,但关键是)。因此,对于大量数据(如万亿行)而言,使用较小的数据类型可能仍然是一件好事,对于对记录进行大量处理但没有空间限制问题的数据库而言,最好使用适合数据和总线宽度的类型。

除非空间/行大小/等是一个重要的考虑因素,我永远不会使用小于32位整数的整数类型。几乎可以保证在某个地方会出现类型转换/溢出/下溢问题。此外,系统对32位操作进行了高度优化(无论如何,16位或8位整数可能在32位寄存器中处理)


同时,除非我真的需要,否则我可能不会使用64位整数。

让数据库实现来担心它


注意/暗示该字段将存储何种数据总是好的,它让SQL后台程序在尽力为您提供最佳服务时考虑到这一点。

空间便宜,但速度慢。适合内存的10Gb数据库比不适合内存的20Gb数据库快一个数量级同样的道理。对于32位体系结构的CPU,您也可以使用短的,但由于性能原因,它在内部被改为4字节。。。