Я пытаюсь найти хороший и эффективный способ выполнить запрос, подобный следующему:
SELECT *
FROM tableA a
WHERE a.manager IN ( SELECT id
FROM tableB b
CONNECT BY PRIOR b.id = b.manager_id
START WITH b.id = 'managerBob')
OR a.teamLead IN ( SELECT ID
FROM tableB b
CONNECT BY PRIOR b.ID = b.manager_id
START WITH b.ID = 'managerBob')
OR a.creator IN ( SELECT id
FROM tableB b
CONNECT BY PRIOR b.id = b.manager_id
START WITH b.id = 'managerBob')
Как вы можете видеть, я пытаюсь использовать несколько предложений WHERE, но каждое предложение используеттот же набор данных в правой части уравнения.Кажется, он работает очень медленно, если я использую более одного предложения, и я уверен, что это потому, что Oracle выполняет каждый подзапрос.Есть ли способ сделать что-то вроде этой работы?
SELECT *
FROM tableA a
WHERE a.manager,
a.teamLead,
a.creator in ( SELECT id
FROM tableB b
CONNECT BY PRIOR b.id = b.manager_id
START WITH b.id = 'managerBob')
Кстати, извините, если это то, что я мог бы гуглить, я не уверен, как это назвать.