Я хотел бы, чтобы вы помогли обсудить, как избежать слишком большого количества объединений, используя общий подход. Есть ли общее правило для этого?
В настоящее время у меня есть очень сложный запрос, который объединяет 11 таблиц, и производительность очень низкая (даже с индексами и обновленной статистикой). Используя Entity Framework Profiler, я получил предложение уменьшить количество объединений и вместо этого выполнить несколько отдельных запросов: ссылка.
Каждое соединение требует от базы данных дополнительной работы, а сложность и стоимость запроса быстро растут с каждым дополнительным соединением. Хотя реляционная база данных оптимизирована для обработки объединений, зачастую более эффективно выполнять несколько отдельных запросов, а не один запрос с несколькими объединениями.
Как изменить следующий пример, чтобы повысить производительность?
select *
from Blogs blog0_
inner join Posts posts1_
on blog0_.Id = posts1_.BlogId
inner join Comments comments2_
on posts1_.Id = comments2_.PostId
inner join Users user3_
on posts1_.UserId = user3_.Id
inner join UsersBlogs users4_
on blog0_.Id = users4_.BlogId
inner join Users user5_
on users4_.UserId = user5_.Id