UPRAVIT
Nejste si jisti, co potřebujete
- můžete ukázat nějaký očekávaný výsledek
- Můžete nám říct, co máte na mysli pod pojmem "zničí to, pokud jde o výkon" (dojde k 20 sekundám doby provedení?)
Nevěřím, že je to efektivnější, ale zkuste to.
select
*
from
tableA as a
left join tableB as b1
on a.id=b1.id1
and b1.col2='Red'
left join tableB as b2
on a.id=b2.id2
and b2.col2='Blue'
where
(b1.id1 is not null or b2.id2 is not null)
or (b1.id1 is null and b2.id2 is null)
Výsledek musíte spravovat v SELECT
s CASE WHEN
...
Můžete porovnat výkon a umístit indexy do příslušných sloupců (závisí na tom, co máte v celé tabulce a dotazu, ale zde by to mělo být id, id1 and col2
)