假设我想保存最大的数据网格行数。24 因为每行是 1 小时。

要在数据库中保存行索引,tinyint 字段就完全足够了。但回想起来,我记得数据库针对整数进行了优化?!

那么值得使用tinyint吗?

有帮助吗?

解决方案

对于更窄的表,数据库将在单个 IO 页中容纳更多记录,因此需要更少的硬盘读取。

经验法则是始终使用需要最小存储大小的数据类型。

其他提示

一般来说,空间越小越好,因为磁盘(或内存)上的单个 8k I/O 页上可以容纳的行越多,搜索和/或检索数据所需的 I/O 就越少...这对于索引中使用的列尤其重要。但是,例如,如果您的计算机是 32 位计算机并且正在运行 32 位操作系统,则可以独立寻址的最小内存块是 32 位,因此如果这是表模式中唯一较小的列小于 32 位,那么这并不重要,因为每个完整的数据行必须在 32 位边界上开始和结束,因此每行必须是 32 位宽的倍数。

即,如果您的桌子是

MyTable(ColA tinyint, ColB Int, ColC DateTime) 这样,每行将占用 16 个字节(128 位),浪费 24 位。

另一方面,如果您有 4 列可能是tinyInts,那么请务必使用它,因为 SQL Server 会将其中的四个列放入磁盘上的一个 32 位存储位置中(无论您以什么顺序声明它们)。

同样的原则适用于在 64 位 OS/CPUbB 上运行的 64 位 SQL Server

小整数

空间越小越好。

天音 一个整数,并且它比 INT 更快,因为 TINYINT 比 INT 数据类型(4 个字节)占用更少的字节(1 个字节)。

参考:

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top