般来说,我总是使用整数。我知道理论上这不是最佳实践,因为您应该使用可以保证存储数据的最小数据类型。
例如,tinyint当您知道您将存储的唯一数据是 1、0 或 null(稍后将其扩展为 2 或 3 的可能性很小)时,最好使用它。
但是,我知道这样做的唯一原因是出于存储目的——在一行上使用 1 个字节而不是 4 个字节。
除了节省硬盘空间之外,使用tinyint(或smallint什bigint至)超过 just有什么影响?int
不要再考虑存储空间,而是考虑缓冲池和存储带宽。在极端情况下,CPU 缓存和内存总线带宽。链接的文章是该系列文章的一部分,重点介绍了集群键选择不佳(INT vs GUID vs Sequential GUID)的问题,但它强调了字节可以产生的差异。
最重要的信息是设计问题。在您达到 VLDB 领域之前,差异不会显示在适当规范的服务器上的单个数据库中,但如果您可以节省几个字节,为什么不这样做。
我想起了前面问题中描述的环境。每个 SQL 实例有 400 多个数据库,大小从 50mb-50GB 不等。在该环境中为每个记录、每个表、每个数据库清理几个字节可能会产生重大影响。