假设我在一个表中有一个列,它可以保存信息,只需要一个char 'a'
,或者像一个巨大的二进制块一样大,转换为jpg,png,mp3等等。
我应该使用哪种数据类型?
我想varbinary(max)
或varchar(max)
,但是如果我只存储一个字符串或一个短字符串,它会占用未使用的空间吗?
当字段具有可变长度的数据类型时,如何存储数据?
根据这个qa,https://dba.stackexchange.com/questions/1767/how-do-too-long-fields-varchar-nvarchar-impact-performance-and-disk-usage-ms,它应该没关系,除了这个:
内存
If the client application allocates memory using the maximum size, the application would allocate significantly more memory than is necessary. Special considerations would have to be done to avoid this.
我怎么知道这个?对不起,如果我愚蠢但看起来太模糊了。
答案 0 :(得分:0)
如果我是你,我将使用File-Stream启用数据库。
您可以在此处了解更多信息:
http://technet.microsoft.com/en-us/library/bb933993(v=sql.105).aspx
网络上也有很多信息,因此在使用时不应该遇到任何问题。
通常,您将拥有一个包含许多列的表,以及一个将以二进制格式或BLOB - 二进制大对象存储信息的列。好处是它可以存储的信息仅取决于您的硬盘空间,因为它存储在您的驱动器中。在其他列中,您可以有一个类型字段 - 对于eaxmaple mp3 / gpef / avi / etc,它将帮助您的应用程序以原始类型转换此BLOB。