Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про Entity Framework: split query, include, performance, duplication

Что такое Split Queries? Как они решают проблему производительности при загрузке связанных сущностей?

Проверяет знание механизма разделения сложных 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

    Entity Framework

Ключевые слова

#split query

#include

#performance

#duplication

Подпишись на C# Developer в телеграм