我有一个关于 SQL 语言中可用于将数据存储到数据库本身的数据类型的问题。由于我正在处理非常大的数据库,并且有扩展超过 150GB + 数据的趋势,我需要密切注意并节省服务器硬盘上的每一点空间,这样数据库就不会占用所有宝贵的空间。所以我的问题如下:
哪种数据类型最适合在数据库中存储 80-200 个字符长的字符串?
我知道例如
varchar(200)
和nvarchar(200)
其中nvarchar
支持 unicode 字符。其中哪一个会占用更少的数据库空间,或者如果有第三种数据类型我不知道,我可以用它来存储数据(如果我知道我要存储的字符串是只是数字和字母的组合,没有任何特殊字符)是否有其他一些技术可以用来节省数据库空间,使其不会快速扩展?
有人可以帮我解决这个问题吗?
附言伙计们,我还有第四个问题:
例如,如果我有一个表中的
nvarchar(max)
数据类型,并且输入的记录只占用100个字符,那么为这种记录保留了多少数据?假设我有以下形式的 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/