A hora correta, depende da tua base de dados.
Por exemplo, se você tem situações em duas tabelas distintas, você pode utilizar o union, quando você não consegue isso através de joins.
Quanto à performance, tudo depende... da tua base (quantidade de registros), dos índices etc.
CREATE TABLE teste (descricao VARCHAR2(100));
INSERT INTO teste VALUES ('Sim');
INSERT INTO teste VALUES ('Sim');
INSERT INTO teste VALUES ('Sim');
-- Union (Faz distinct no 'Sim')
SELECT descricao
FROM teste
UNION
SELECT 'Não'
FROM dual ;
-- Union ALL
SELECT descricao
FROM teste
UNION ALL
SELECT 'Não'
FROM dual ;