EDIT
Tidak begitu yakin apa yang Anda butuhkan
- dapatkah Anda menunjukkan hasil yang diharapkan
- bisakah Anda memberi tahu kami apa yang Anda maksud dengan "membunuhnya, dalam hal kinerja" (apakah itu berlangsung hingga 20 detik waktu eksekusi?)
Saya tidak percaya ini lebih efisien tetapi cobalah.
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)
Anda harus mengelola hasilnya di SELECT
dengan CASE WHEN
...
Anda dapat membandingkan kinerja dan meletakkan indeks pada kolom yang sesuai (tergantung pada apa yang Anda miliki di tabel dan kueri lengkap tetapi di sini seharusnya id, id1 and col2
)