我希望您的帮助可以讨论如何使用通用方法避免过多的连接。这是一般规则吗?
目前,我有一个非常复杂的查询,它连接11个表并且性能非常差(即使有索引和更新的统计信息)。使用Entity Framework Profiler,我收到了减少连接数量的建议,而是执行了几个单独的查询:link。
每个连接都要求数据库执行其他工作,并且 每增加一个,查询的复杂性和成本就会迅速增长 加入。虽然关系数据库针对处理连接进行了优化,但它 通常更有效地执行几个单独的查询而不是 一个包含多个连接的查询。
我应该如何修改以下示例以获得更好的性能?
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
答案 0 :(得分:2)
有几种方法可以最小化(优化)表连接数: -
使用以下方法封装几个连接: -
您可以从链接中找到有关CTE和Temp表的详细信息 Common Table Expression,View。 对于临时表,只需在表名前添加“#”并从联接中插入所需数据,然后在同一会话中使用它。