В прошлом это случалось со мной, и следующие исправили это для меня:
- Убедитесь, что весь этот код находится в хранимой процедуре. Даже при использовании params хранимая процедура с большей вероятностью будет использовать тот же план.
- Я не буду повторять то, что сказал Нисарг Шах в комментариях, поскольку похоже, что вы обращались к ним, но это все очень важные вещи, которые нужно проверить.
Это может звучать странно, но максимально квалифицировать код. По моему опыту, гораздо более вероятно найти существующий план, если у него возникают проблемы, если он составлен так:
(@P1 varchar(1043),@P2 varchar(6))
UPDATE database.dbo.table
SET database.dbo.table.FILEDATA=@P1
WHERE database.dbo.FILEID=@P2
Обычно я не пишу такие запросы, потому что они кажутся немного сложными для чтения, но в прошлом это работало для меня, когда я получал кучу планов.