使用varchar(max)缓慢"选择"查询

Toc*_*Toc 6 sql-server sql-server-2008-r2

我有一个500行的小桌子.该表有10列,包括一个varchar(max)列.

当我执行此查询时:

SELECT TOP 36 *
FROM MyTable
WHERE (Column1 = Value1)
Run Code Online (Sandbox Code Playgroud)

它在3分钟内检索大约36行.varchar(max)列每行包含3000个字符.

如果我尝试只检索一行:

SELECT TOP 35 *
FROM MyTable
WHERE (Column1 = Value1)
Run Code Online (Sandbox Code Playgroud)

然后查询在0秒内检索35行.

在我的客户端统计中,从服务器收到的字节,我有:

95 292用于在0秒内检索数据的查询

在3分钟内查询数据的查询超过200 000 000

你知道它来自哪里?

编辑---这是我的真实代码:

select top 36 *
from Snapshots
where ExamId = 212

select top 35 *
from Snapshots
where ExamId = 212
Run Code Online (Sandbox Code Playgroud)

编辑---有关客户统计的更多信息

这两个统计数据存在巨大差异:

从服务器收到的字节数:66 038 Vs超过2 000 000

从服务器30 Vs 11000接收的TDS数据包

Maj*_*eri 0

使用IndexforExamIdselect field1,field2,etc可以代替 select * ....