sql-server - SQL Server 数据类型来存储字符串并占用更少的空间

标签 sql-server database string varchar nvarchar

我有一个关于 SQL 语言中可用于将数据存储到数据库本身的数据类型的问题。由于我正在处理非常大的数据库,并且有扩展超过 150GB + 数据的趋势,我需要密切注意并节省服务器硬盘上的每一点空间,这样数据库就不会占用所有宝贵的空间。所以我的问题如下:

  1. 哪种数据类型最适合在数据库中存储 80-200 个字符长的字符串?

  2. 我知道例如 varchar(200)nvarchar(200) 其中 nvarchar 支持 unicode 字符。其中哪一个会占用更少的数据库空间,或者如果有第三种数据类型我不知道,我可以用它来存储数据(如果我知道我要存储的字符串是只是数字和字母的组合,没有任何特殊字符)

  3. 是否有其他一些技术可以用来节省数据库空间,使其不会快速扩展?

有人可以帮我解决这个问题吗?

附言伙计们,我还有第四个问题:

  1. 例如,如果我有一个表中的nvarchar(max)数据类型,并且输入的记录只占用100个字符,那么为这种记录保留了多少数据?

  2. 假设我有以下形式的 ID 191697193441 ...将此数字存储为 varchar(200) 或 bigint 更有意义吗?

最佳答案

nvarchar 所需的大小是每个字符 2 个字节,因为它表示 unicode 数据。 varchar 每个字符需要 1 个字节。存储大小是实际输入的字符数 + 2 个字节的开销。 varchar(max) 也是如此。

来自 https://learn.microsoft.com/en-us/sql/t-sql/data-types/char-and-varchar-transact-sql :

varchar [ ( n | max ) ] Variable-length, non-Unicode string data. n defines the string length and can be a value from 1 through 8,000. max indicates that the maximum storage size is 2^31-1 bytes (2 GB). The storage size is the actual length of the data entered + 2 bytes.

因此对于您的第 4 个问题,nvarchar 需要 100 * 2 + 2 = 202 个字节,varchar 需要 100 * 1 + 2 = 102 个字节。

关于sql-server - SQL Server 数据类型来存储字符串并占用更少的空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48768746/

相关文章:

sql - 如何将 SqlBulkCopy 与可为空的列一起使用

sql - VBA Excel - 通过 ADO 的 SQL 查询返回无限的空记录集

sql - SQL 查询中 INSERT、DELETE 和 UPDATE 的逻辑查询处理阶段

sql - 第二规范化阶段/正常形式和第三规范化阶段/正常形式之间的区别

python - 如何存储一个大的、稀疏的、多维的表,其中的单元格包含不同数量的元素?

java - 扫描一个整数和一个for循环来扫描一些字符串

SqlDataReader 在没有数据时获取行

database - HDF 与 NoSQL 解决方案

c++ - 如何将 xor 加密从使用 std::string 转换为仅使用 char 或 char *?

xml - 使用 Ant 解析 XML 文档中的字符串