500行の小さなテーブルがあります。このテーブルには、1 つの varchar(max) 列を含む 10 列があります。
このクエリを実行すると:
SELECT TOP 36 *
FROM MyTable
WHERE (Column1 = Value1)
3 分で約 36 行を取得します。varchar(max) 列には、各行に 3000 文字が含まれます。
1 行少ないだけを取得しようとすると、次のようになります。
SELECT TOP 35 *
FROM MyTable
WHERE (Column1 = Value1)
次に、クエリは 0 秒で 35 行を取得します。
私のクライアントの統計、サーバーから受信したバイト数には、次のものがあります。
0 秒でデータを取得するクエリの場合は 95 292
3 分間でデータを取得するクエリで 200 000 000 以上
由来って知ってる?
編集 --- これが私の実際のコードです:
select top 36 *
from Snapshots
where ExamId = 212
select top 35 *
from Snapshots
where ExamId = 212
編集 --- クライアント統計の詳細
大きな変動がある2つの統計は次のとおりです。
サーバーから受信したバイト数: 66 038 対 2 000 000 以上
サーバーから受信した TDS パケット 30 Vs 11000