Быстрый и грязный ответ: установите SqlCommand.CommandTimeout
на более высокое значение.
Длинный ответ:
- Запустите запрос в SSMSс включенным «Показать фактический план выполнения».Проверьте результат для подсказок индекса.
- Проверьте журналы сервера базы данных на наличие подозрительных событий
- Убедитесь, что статистика не устарела
Этот запрос показывает возрастстатистика:
SELECT Object_Name(ind.object_id)
, ind.name
, STATS_DATE(ind.object_id, ind.index_id)
FROM SYS.INDEXES ind
Оптимизатор запросов использует статистику, когда выбирает, как выполнить запрос.Если статистика старая, она может сделать (действительно) неудачный выбор.