我有一個四表,TopLevelParent,兩個中級表MidParentA和MidParentB,以及一個子表,它可以有一個MidParentA或MidParentB的父級(一個或另一個midParentB必須在地點)。兩個中級表都有一個TopLevelParent的父表。SQL Server左加入'或'運營商
頂級表是這樣的:
TopLevelId | Name
--------------------------
1 | name1
2 | name2
的中親表是這樣的:
MidParentAId | TopLevelParentId | MidParentBId | TopLevelParentId |
------------------------------------ ------------------------------------
1 | 1 | 1 | 1 |
2 | 1 | 2 | 1 |
子表是這樣的:
ChildId | MidParentAId | MidParentBId
--------------------------------
1 | 1 | NULL
2 | NULL | 2
我已經使用接下來的左邊加入一個更大的存儲過程,它正在超時,它看起來像是OR操作r最後一個加入是罪魁禍首:
SELECT *
FROM TopLevelParent tlp
LEFT JOIN MidParentA a ON tlp.TopLevelPatientId = a.TopLevelPatientId
LEFT JOIN MidParentB a ON tlp.TopLevelPatientId = b.TopLevelPatientId
LEFT JOIN Child c ON c.ParentAId = a.ParentAId OR c.ParentBId = b.ParentBId
是否有更高性能的方式來做這個連接?
這是一些複雜的商業 – Roel