繁体   English   中英

为 SQL 服务器中的数字列选择最佳数据类型

[英]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) 。! 那只会在以后给你带来无法估量的悲伤和头痛。

选择很明确:

  • 如果你有整数- 使用TINYINTSMALLINTINTBIGINT - 取决于你需要的数字范围

  • 如果您需要小数- 使用DECIMAL(p,s)以获得最佳和最稳健的行为(没有像FLOATREAL这样的舍入错误)

选择最合适的数据类型比任何存储的微优化都重要得多。 即使有 4000 万行 - 这仍然不是一个大问题,无论您使用 4 字节还是 8 字节。 无论您使用数字类型还是字符串类型 - 这都会对数据库的可用性和处理产生巨大影响!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM