Entity Framework хранимая процедура через удаленное соединение - PullRequest
0 голосов
/ 05 февраля 2012

Я использую EF 4, и я озадачен еще одной странностью ... По сути, у меня есть довольно простая хранимая процедура, которая отвечает за извлечение данных из SQL и возврат сложного типа. У меня есть хранимая процедура, добавленная в мою модель с помощью функции импорта. Это более или менее в следующей структуре.

using (ModelContainer context = GetNewModelContainer())
{
   return context.GetSummary(id, startDate, endDate, type).ToList();
} 

Следует отметить, что приведенный выше код выполняется через удаленное SQL-соединение . Выполнение занимает около 10 минут. Однако при использовании SQL Server Management Studio через удаленное соединение хранимая процедура выполняется практически мгновенно.

Есть только около 100 записей, которые возвращаются, и каждая запись имеет приблизительно 30 полей.

Когда я запускаю приведенный выше код локально (без удаленного подключения) для резервной копии базы данных клиента, он выполняется без каких-либо задержек.

Я нахожусь в тупике из-за того, что может быть причиной этого удара производительности. 10 минут недопустимо. Я не думаю, что это хранимая процедура. Может ли это быть сериализация из-за удаленного соединения? Любые мысли о том, как я могу отследить и исправить виновника?

1 Ответ

3 голосов
/ 05 февраля 2012

Симптомы, которые вы описываете, обычно связаны с неверно кэшированным планом запросов (из-за перехвата параметров).

Убедитесь, что ваша статистика актуальна, и перестройте индексы, если они фрагментированы.

Каноническая ссылка: Медленно в приложении, быстро в SSMS? Абсолютно необходимое чтение.

Возможные полезные ссылки SO:

...