альтернатива левого соединения или условие - PullRequest
0 голосов
/ 17 октября 2019

левое соединение с или условие снижает производительность запроса, поэтому альтернатива левому соединению или условию

select tableb.columnA, tableb.columnB,tablec.id,tabled.id,tablee.id
from tableA tableA
LEFT JOIN tableb tableb ON ((tableb.columnA = tableA.id)
                         OR (tableb.columnB = tableA.id))

LEFT JOIN tablec tablec ON tablec.Id = tableb.columnA 
LEFT JOIN tabled tabled ON tabled.id = tableb.columnB
LEFT JOIN tablee tablee ON tablee.Id= tableb .id

1 Ответ

0 голосов
/ 17 октября 2019

Я бы начал с объединения tableb снова на columnb в отдельном join.

. На других объединениях вы можете использовать функцию ISNULL, например, tablec.Id = ISNULL(tableba.columnA, tablebb.columnA).

Зависит от того, что вам нужно, и от ваших данных вы можете использовать UNION / UNION ALL или COALESCE для получения данных из правильного экземпляра tableb.

И убедиться, что оба столбца в tablebпокрыты индексом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...