Новые индексы в таблице вызывают тайм-аут запроса - PullRequest
0 голосов
/ 21 февраля 2019

У меня сложилось мнение, что я уже несколько лет без проблем запрашиваю запросы Entity Framework.Вчера для другого использования данных я добавил пару индексов в базовую таблицу, что в итоге привело к истечению времени ожидания запроса в Entity Framework (но при выполнении запроса в SSMS возвращалось быстрее, чем раньше).Модель данных была сгенерирована с помощью функции «обновить модель из базы данных», и это приложение использует EF v4.Представление - это просто самостоятельное соединение с одной базовой таблицей, о которой я упоминал выше, с ограничением по дате.Я подтвердил, что удаление новых индексов сделало запрос Entities снова без проблем.

Было найдено 2 решения, чтобы снова заставить работать запрос Entity Framework:

  • Установите для тайм-аута запроса значение 0 (но мне не нравится это решение)

  • Добавьте еще один индекс в базовую таблицу, который конкретно учитывает ограничения запроса Entity Framework (очевидно, лучшее решениеи, возможно, в любом случае это должно быть сделано)

Почему добавление пары индексов в таблицу - что делает базовый запрос на самом деле быстрее при выполнении непосредственно в SSMS, но не обращается непосредственно к запросубыть запущенным - заставить сущности споткнуться так?

1 Ответ

0 голосов
/ 21 февраля 2019

Звучит так, как будто вам нужно добавить подсказку к запросу: скажите, чтобы он использовал исходный индекс, который хорошо сработал для вас.Подсказки противоречивы, поэтому проведите некоторые исследования и проведите много испытаний.Вы также можете посмотреть на «другое использование» данных: убедитесь, что новые запросы не вызывают блокировку, которая блокирует исходный вариант использования.

https://www.mssqltips.com/sqlservertip/2045/using-hints-to-test-sql-server-indexes/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...