2016-10-24 3 views
2

Мы используем представления в Entity Framework. Когда я выполняю просмотр программы на SQL Server, он был быстро отображен за 2 секунды. Я создал простое выражение linq query/lambda для получения результата в приложении или приложения, но для получения конечного результата требуется более 2 минут. Я не уверен, как быстро работает тот же режим в backend (SQL Server), создавая проблему, когда я использую его через Entity Framework.Повышение производительности запроса Linq Framework Entity Framework

C#

this.db.progamview.Where(x => 
          x.pId== 6&& 
           x.qId== 12 
          && x.RId== 20151 
          && x.cId== 102) 

Я попытался установить тайм-аут, но все же это не сработало. каковы способы повышения производительности в Entity Framework при обработке больших наборов данных или методах обработки представлений в EF, которые извлекают большие массивы данных?

Пробовал AsNotracking Метод, как показано ниже, но не повезло.

this.db.progamview.Where(x => x.pId== 6 && x.qId== 12 && x.RId== 20151 && x.cId== 
102).AsNoTracking(); 

Version: EF6.1 

Он возвращает 18 столбцов. Мне нужны все столбцы для отображения в интерфейсе.

Пробовал ниже методологии, но все равно получаю вывод слишком поздно. то есть от 4 до 5 минут, чтобы дать результат.

  1. таймаут собственности в контексте

  2. AsNotracking метод

Client статистика скриншот ниже

enter image description here

Любой другой лучший способ улучшить производительность?

+0

Сколько столбцов и строк возвращает сервер sql? и сколько байтов передается? – Fredou

+0

@fredou обновленный question – SivaRajini

+0

Вы могли бы указать точное число? можете ли вы опубликовать скриншот статистики клиента? (из студии управления sql) – Fredou

ответ

0

Используйте AsNoTracking(), как показано ниже.

this.db.progamview.Where(x => x.pId== 6 && x.qId== 12 && x.RId== 20151 && x.cId== 
102).AsNoTracking(); 

AsNoTracking()

Update:Performance Considerations for EF 6

+0

спасибо. Пробовал уже, но не повезло. та же проблема – SivaRajini

+0

см. в разделе ** Обновление **. – Sampath

0

Вы можете добавить индексы в базах данных. Если вы сначала используете код, вы можете добавить атрибут [Index].

+0

@Wojtpls мы используем первый подход db. У нас уже созданы представления, просто мы вызываем представления из entityframework. – SivaRajini

+0

Если вы сначала используете базу данных, вы можете использовать представление в виде таблицы. Это даст лучшую производительность по сравнению с запросом на ссылку –

+0

@PankajRawat мы используем только виды просмотров – SivaRajini