[英]Choosing best datatype for numeric column in SQL Server
我在 SQL 服务器中有一张表,其中包含大量数据 - 大约 4000 万行。 基本结构是这样的:
标题 | 类型 | 长度 | Null经销 |
---|---|---|---|
客户ID | 数字 | 8 | 60% |
卡系列 | 数字 | 5 | 70% |
- | - | - | - |
- | - | - | - |
笔记 | 字符串-unicode | 2000 | 40% |
两个数字列都由具有特定长度的数字填充。
我不知道选择哪种数据类型来拥有最小大小的数据库并通过索引customerId
列来获得良好的性能。 如果我选择CHAR(8)
,请参阅这篇文章,即使在 null 数据中,数据库每行消耗 8 个字节。
我决定使用INT
来减小数据库大小并拥有良好的索引,但 null 数据将再次使用每行 4 个字节。 如果我想减小这个大小,我可以使用VARCHAR(8)
,但我不知道,系统在设置索引这个类型上是否有很好的性能。 主要问题是减少数据库大小很重要,或者对数字类型有良好的索引。
谢谢。
如果它是一个数字- 那么一定要选择一个数字数据类型! 不要将您的数字存储为char(n)
或varchar(n)
。! 那只会在以后给你带来无法估量的悲伤和头痛。
选择很明确:
如果你有整数- 使用TINYINT
、 SMALLINT
、 INT
或BIGINT
- 取决于你需要的数字范围
如果您需要小数- 使用DECIMAL(p,s)
以获得最佳和最稳健的行为(没有像FLOAT
或REAL
这样的舍入错误)
选择最合适的数据类型比任何存储的微优化都重要得多。 即使有 4000 万行 - 这仍然不是一个大问题,无论您使用 4 字节还是 8 字节。 无论您使用数字类型还是字符串类型 - 这都会对数据库的可用性和处理产生巨大影响!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.