TopLevelParent、2 つの中間レベル テーブル MidParentA と MidParentB、および MidParentA または MidParentB の親を持つことができる子テーブルの 4 つのテーブルがあります (一方または他方の midParent が配置されている必要があります)。どちらの中間レベル テーブルにも、TopLevelParent の親テーブルがあります。
最上位テーブルは次のようになります。
TopLevelId | Name
--------------------------
1 | name1
2 | name2
MidParent テーブルは次のようになります。
MidParentAId | TopLevelParentId | MidParentBId | TopLevelParentId |
------------------------------------ ------------------------------------
1 | 1 | 1 | 1 |
2 | 1 | 2 | 1 |
子テーブルは次のようになります。
ChildId | MidParentAId | MidParentBId
--------------------------------
1 | 1 | NULL
2 | NULL | 2
タイムアウトしている大規模なストアド プロシージャで次の左結合を使用しましたが、最後の左結合の OR 演算子が原因のようです。
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
この結合を行うためのより効率的な方法はありますか?