Проверяет знание механизма разделения сложных JOIN-запросов на несколько для уменьшения дублирования данных.
Split Queries — это когда EFCore вместо одного SELECT с JOIN, который возвращает дублируемые строки, выполняет несколько простых запросов: сначала основная сущность, потом связанные коллекции через IN. Это снижает объём передаваемых данных и память, устраняя Cartesian explosion при загрузке Include.
Проблема Single Query:
SELECT * FROM A JOIN B дублирует A при множестве B.
Split Query режим:
var blogs = context.Blogs
.Include(b => b.Posts)
.AsSplitQuery()
.ToList();Как работает:
Запрос 1: SELECT * FROM Blogs.
Запрос 2: SELECT * FROM Posts WHERE BlogId IN (…).
Плюсы:
Меньше данных по сети, меньше объём памяти.
Минусы:
Дополнительные roundtrips к БД.
Уровень
Рейтинг:
2
Сложность:
7
Навыки
Entity Framework
Ключевые слова
Подпишись на C# Developer в телеграм