簡體   English   中英

如何避免過多的連接?

[英]How to avoid too many joins?

我希望你能幫忙討論如何使用通用方法避免過多的連接。 這是一般規則嗎?

目前,我有一個非常復雜的查詢,加入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

有幾種方法可以最小化(優化)表連接數: -

  • 確保您想要什么以及需要哪些表。
  • 還要確保表格是標准化形式。

使用以下方法封裝幾個連接: -

  • 使用CTE
  • 使用臨時表
  • 查看

您可以從Common Table ExpressionView鏈接中找到有關CTE和Temp表的詳細信息。 對於臨時表,只需在表名前添加“#”並從連接中插入所需數據,然后在同一會話中使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM