使用Oracle我总是将表中任意大小的CHAR和VARCHAR2(从1到32K)作为普通列处理。
我听说有些人说最好将这个属性保存为外部文件,而不是普通表格列中的内容..
在SQL Server中为长文本列使用普通Varchar字段时,您是否看到任何性能/其他问题?
答案 0 :(得分:2)
SQL Server具有在外部实际存储数据的工具,称为FILESTREAM
。这使得所有事务都保持一致。
请注意何时使用FILESTREAM
:
在SQL Server中,BLOB可以是将数据存储在表中的标准varbinary(max)数据,也可以是将数据存储在文件系统中的FILESTREAM varbinary(max)对象。数据的大小和使用决定了您是应该使用数据库存储还是文件系统存储。如果满足以下条件,则应考虑使用FILESTREAM:
- 平均存储的对象大于1 MB。
...
因此,您可以推断出一般建议是,对于小于1 MB的对象(通常)使用varchar
或varbinary
(max)
来存储它们。使用(max)
数据类型的列可以存储最多2GB的数据,并且可以考虑链接到的页面上的其他条件。
答案 1 :(得分:1)
在Oracle VARCHAR2中,值始终存储在内联表中。
对于LOB对象,您可以指定存储位置,它甚至可以是不同的表空间。小的LOB对象值仍然保存在表中(默认情况下)。如果您的查询需要全表扫描,如果您没有选择LOB列,它可以提高性能。