Первый запрос невозможен и никогда не вернет набор результатов.Это в основном говорит: «Дайте мне все записи в таблице, где color_id равен 1, а color_id равен 2», что никогда не может произойти.
Если вы хотите спросить разницу между
SELECT DISTINCT a.id
FROM RelationshipTable as a
JOIN RelationshipTable as b ON b.id = a.id
WHERE a.color_id = 1
OR b.color_id = 2;
и
SELECT DISTINCT color_id
FROM RelationshipTable
WHERE color_id = 1
OR color_id = 2;
В этом случае первое всегда будет медленнее второго для больших таблиц.В первом случае выполняется полное сканирование таблицы A, а во втором - индексы, которые должны использоваться в предложении where.