10

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

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

那么使用tinyint值得吗?

4

4 回答 4

10

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

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

于 2010-07-07T17:58:47.443 回答
3

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

参考:

于 2010-07-07T17:58:00.647 回答
3

通常,空间越小越好,因为磁盘(或内存)上的一个 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 会将其中的 4 列放在磁盘上的一个 32 位存储位置(无论您以什么顺序声明它们)。

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

于 2010-07-07T18:11:35.730 回答
2

微小的

空间越小越好。

于 2010-07-07T17:56:42.647 回答