У меня есть запрос linq, который выбирает несколько полей из таблицы Customer.Объединение запросов LINQ с каркасом сущности C#
Применяются следующие фильтры: Func<IQueryable<T>, IQueryable<T>>
с .Invoke
.
Исходный запрос - это по существу select * from customer
.
Метод фильтра существенно select top 10
Выход SQL является select top 10 from (select * from customer)
Моя таблица клиентов содержит более 1000000 строк, которые вызывает этот запрос, чтобы занять около 7 секунд, чтобы выполнить в SSMS. Если я изменил вывод SQL на select top 10 from (select top 10 * from customer)
, запустив его в SSMS, запрос будет мгновенным (как и следовало ожидать).
Мне интересно, может ли кто-нибудь знать, что может привести к тому, что LINQ не будет сочетать их с хорошим способом, и если есть лучшая практика/обходной путь, который я могу реализовать.
Следует отметить, что мой фактический код не выбирает * он выбирает несколько полей, но нет ничего сложнее.
Я использую SQL Server 2008 и MVC 3 с рамки сущности (не уверен, что версия)
Edit: Я хотел бы добавить, это IQueryable все пути, ничто не вычисляется до конца, и в результате длительное исполнение ограничивается одной линией.
Вы когда-нибудь решают эту проблему? –
Я не могу вспомнить, я думаю, что добавил в базу данных больше индексов, и это стало не-проблемой. – NibblyPig
Это классно. Пока у вас есть что-то, чтобы работать и работать нормально, это главное. –