在Sql Server中使用varbinary(max)数据类型出现问题

3

我创建了一个包含两列数据类型为varbinary(max)的表。我以二进制格式在这些列中保存pdf文件。插入pdf文件时没有问题。但是,当我在select查询中只选择一列类型为varbinary的单个记录时,检索该记录大约需要一分钟的时间。插入的pdf文件大小为1MB。以下是用于检索单个记录的sql查询:

select binarypdffile from gm_packet where jobpacketid=1

请问是否有一种方法可以提高使用varbinary数据类型的性能。


1
你使用的是哪个版本?2008、2008 R2 还是 2014? - ughai
1
你能为表 gm_packet 添加模式和索引吗? - ughai
这是什么类型的网络连接?这是我能想象到的唯一现实的原因。 - usr
@ughai,谢谢你的回复。我同时使用2008 R2和2014版本。如果我在gm_packet上添加索引,那么插入数据的速度会变得非常缓慢,因为在插入时索引总是需要重新排列。 - Rajbir Singh
@usr 我只是在 SSMS 中执行 SQL 查询,但获取这条记录需要太长时间。 - Rajbir Singh
显示剩余2条评论
1个回答

0

你能试着计时以下查询吗:

SELECT cnt = COUNT(*) INTO #test1 FROM gm_packet WHERE jobpacketid = 1

SELECT binarypdffile INTO #test2 FROM gm_packet WHERE jobpacketid = 1

第一个测试用例测试查找记录所需的时间。如果速度较慢,请在jobpacketid字段上添加索引。假设这些值按顺序逐渐出现,我不会担心未来添加记录时的性能问题。否则,您可能需要定期重建索引。
第二个测试用例测试从表中获取数据(并将其存储回另一个表)所需的时间。由于没有数据离开“系统”,因此应该显示“原始数据库性能”,没有任何“外部”影响。
两者都不应该很长。如果它们不是,但仍然需要“很长时间”才能在SSMS中运行原始查询并在网格中获取二进制数据,则我猜测这可能是网络问题(wifi?)或SSMS在GUI中表示blob非常糟糕;这已经被注意到了=)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接