2013-09-11 2 views
0

У меня следующий запрос, который принимает много времени -WCF OData повышение производительности

var allEmployees = (from e in context.Employees.Expand("Payroll/Customer") 
.Expand("HR") 
.Expand("Payroll1")             
where e.IsActive 
&& e.Payroll.EmployeeId== this.CurrentEmployee.EmployeeId 
orderby e.Name 
select e).ToArray(); 

Вопросы -

  1. Как я могу улучшить производительность?
  2. Какая часть запроса занимает слишком много времени, Это может быть предложение Expand, где, orderby, select.
  3. Наконец-то я преобразовываю результат в массив. Может ли это повлиять на производительность?
  4. Есть ли у меня другие альтернативы, такие как Parallel.For, PLINQ и т. Д. Я не уверен в этом.

Пожалуйста, предложите

+0

Добавьте свою точную структуру таблицы (включая все индексы!), Захваченный сгенерированный SQL и план выполнения. –

+0

@RemusRusanu Это пример запроса не точный. –

+0

Для общего подхода к ускорению запросов читайте [Ожидания и очереди] (http://technet.microsoft.com/en-us/library/cc966413.aspx). –

ответ

0

Самая важная часть вашего Expand

Нет, это не возможно LINQ через WCF сервисов передачи данных с параллельным LINQ.

Лучший способ индексировать над внешними ключами отношений между клиентами и человеческими ресурсами и таблицами заработной платы

ToArray привычкой берет слишком долго

Использование SQL плана профайлер и выполнение SQL, чтобы улучшить производительность и найти бутылку шеек

Рассмотрим создание метода на вашем уровне сервиса и использовать Select метод возвращать только столбцы, которые нужно

Еще лучшая практика использует формат JSON вместо USIN g Сериализатор XML. Это уменьшит ваш размер ответа до 70%.

Дайте мне знать, если вы хотите получить дополнительную информацию.

Удача

+0

Спасибо. Можете ли вы опубликовать соответствующие ссылки для подробного описания? Было бы полезно –

+0

@RahulTaneja Я ухожу от своего компьютера, и у меня нет хорошей связи с Интернетом, вы можете искать почти все из них в проекте кода. Также вы можете создавать отдельные вопросы для каждого из них в stackoverflow.com сайт. Это лучше, чем большой общий вопрос. Я поставлю ссылки как комментарий в течение 1 дня. Удачи –

Смежные вопросы