Slow “Select” Query with varchar(max)

折月煮酒 提交于 2019-12-07 03:54:20

问题


I have a small table with 500 rows. This table has 10 columns including one varchar(max) column.

When I perform this query:

SELECT TOP 36 *
FROM MyTable
WHERE (Column1 = Value1)

It retrieves around 36 rows in 3 minutes. The varchar(max) columns contains in each row 3000 characters.

If I try to retrieve only one row less:

SELECT TOP 35 *
FROM MyTable
WHERE (Column1 = Value1)

Then the query retrieves 35 rows in 0 seconds.

In my clients statistics, Bytes received from server, I have:

95 292 for the query retrieving data in 0 sec

over 200 000 000 for the query retrieving data in 3 min

Do you know does it come from?

EDIT --- Here is my real code:

select top 36 *
from Snapshots
where ExamId = 212

select top 35 *
from Snapshots
where ExamId = 212

EDIT --- More info on clients statistics

The two statistics having a huge variation are:

Bytes received from server : 66 038 Vs More than 2 000 000

TDS packets received from server 30 Vs 11000


回答1:


Use Index for ExamId also use select field1,field2,etc instead of select * ....




回答2:


I am not sure but try this:

select * from Snapshots where ExamId = (select top 36 ExamId from Snapshots where ExamId = 212)




回答3:


How about trying the top 50, then top 75, then top 100, to see if there is a bigger increase again, because it seems like it just this one row, or maybe just specific rows in your table.



来源:https://stackoverflow.com/questions/10707773/slow-select-query-with-varcharmax

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!