Общие методы для оптимизации LINQ

  • Использовать Stored procedures для сложного чтения
    Для сложного чтения из базы вместо LINQ используйте stored procedures (фильтры, поиск, большое количество данных, большое число параметров).
  • Применять LINQ Include для включения связанных данных
    Используйте LINQ Include, чтобы сразу включить в запрос дополнительные связанные небольшие таблицы (иначе внешние ключи будут делать много лишних запросов из за lazy loading).
  • Использовать SQL в связке с Dapper для сложных и долгих запросов
    Для сложных и долгих запросов имеет смысл использовать не LINQ, а SQL в связке с Dapper (https://gist.github.com/panesofglass/5212462).
    Это средство исполнения SQL и мапинга результата в объекты. Вы можете мапить в Entity объекты, либо в dymanic объекты. В некоторых случаях Dapper дает выигрыш более чем в 5 раз по сравнению в LINQ.
  • Применять по возможности Data Reader
    Data Reader – это самый быстрый способ извлечения большого списка данных (если не Data Reader – то тогда используйте Dapper, как более удобную оболочку).