微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sql – 从图像到Varbinary(最大)

使用sql 2005

我有一个5列的表

ID - int 
Param - smallint 
Data1 - image 
Data2 - image
Data3 - image

图像大小可以只有20个字节,可以大到1MB(是的,超过8k).图像的大小不是恒定的,因为它保存压缩数据.大部分日期BLOB约为512B至1.5kB. Data1,Data2和Data3之间存在逻辑关系,这是它们存储在一起的原因.在拥有3年历史数据的数据库中,有6600万条记录.

努力改进数据存储并使系统为未来的sql版本做好准备.我想将图像列更改为varbinary(MAX)数据类型. FILESTREAM将是另一种可能性,但我不确定持有约2亿个文件会更有效.

在将图像更改为varbinary(max)后,我注意到表的整体大小已经缩小(只是一点点),但每次添加/删除数据时,完成该过程所需的时间要长得多.

根据我的理解,如果varbinary(max)值小于8k,它将被放置在表内,而如果它大于8k则将其放在其他地方,并且指向该数据的指针存储在表中.使用图像时,即使图像数据小于8k,也会存储指针.

通常,每天添加删除20000条记录,因此添加/删除数据的次数不多,单次选择通常在10-200条连续记录中.

有没有办法设置varbinary(max)数据总是(无论大小)存储在表外,与存储图像的方式相同?

解决方法

您可以使用 sp_tableoption设置“超出行的大值类型”

Some additional info

原文地址:https://www.jb51.cc/mssql/76931.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐