TGViewer
C# (C Sharp) programming C# (C Sharp) programming @csharp_ci · 18.1K subscribers
Post #1604 4.43K
10 практических шагах, которые делают запросы EF Core быстрее в 10 раз — и о том, что чаще всего проблема не в EF, а в том, как разработчики его используют.

1️⃣ Добавлять индексы
EF не создаёт их сам. Он рекомендует вручную индексировать колонки из WHERE, JOIN и ORDER BY.

2️⃣ Оптимизировать проекции
Не нужно забирать целую сущность, если нужны 2–3 поля — лучше использовать .Select().

3️⃣ Использовать AsNoTracking для чтения
Отслеживание сущностей расходует память и CPU, поэтому для read-only операций он предлагает .AsNoTracking() или глобальное правило NoTracking.

4️⃣ Аккуратно использовать Include
Слишком много Include приводит либо к N+1, либо к огромным JOIN. Он советует включать только нужные связи.

5️⃣ Избегать больших IN / Contains
Тысячи значений в Contains() превращаются в тяжёлые IN. Лучше бить на батчи или использовать временные таблицы.

6️⃣ Делать пагинацию
Он подчёркивает, что нельзя грузить тысячные выборки целиком: нужны .Skip().Take() или курсорная пагинация.

7️⃣ Использовать скомпилированные запросы
Часто вызываемые запросы можно ускорить через EF.CompileQuery().

8️⃣ Включать SplitQuery
Это помогает избежать «картезианского взрыва», когда много Include создают огромное количество дублирующихся строк.

9️⃣ Писать RAW SQL, если логика сложная
Иногда проще и быстрее использовать FromSqlRaw(), чтобы контролировать план запроса напрямую.

🔟 Использовать кэширование
Часто запрашиваемые данные должны идти из кэша — MemoryCache, Redis или новый HybridCache в .NET 9+.

Бонус:
Перед оптимизацией он советует обязательно измерять узкие места: BenchmarkDotNet, SQL Profiler, планы выполнения.

Ссылка на оригинал
More from @csharp_ci
  1. Oct 3, 2026Post #1892
  2. Oct 2, 2026Post #1891
  3. Sep 29, 2026🖥 C# снова показывает, что «удобный язык = медленный язык» давно не работает. Автор ttfx…
  4. Sep 29, 2026🌦️ Красивый пример того, как может выглядеть современное приложение на Aspire Команда пок…
  5. Sep 27, 2026⚡ .NET 11 ускорили почти везде - от JIT и GC до LINQ и networking Stephen Toub выпустил ог…
  6. Sep 23, 2026🐞 Когда логов недостаточно: дамп памяти из C# Баг возникает только на проде, а локально в…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →