PL / SQL: condiciones opcionales en la cláusula where, ¿sin sql dinámico?

Tengo una consulta donde no todas las condiciones son necesarias. Aquí hay un ejemplo de cómo se ve cuando se usan todas las condiciones:

select num
from (select distinct q.num
       from cqqv q
       where q.bcode = '1234567' --this is variable
             and q.lb = 'AXCT' --this is variable
             and q.type = 'privt' --this is variable
             and q.edate > sysdate - 30 --this is variable
       order by dbms_random.value()) subq
where rownum <= 10; --this is variable

Las partes marcadas como--this is variable&nbsp;Son las partes que, bueno, varían! Si NO se especifica una condición, entonces no hay un valor predeterminado. Por ejemplo, si la entrada especifica "*" para q.type (pero deja todo lo demás igual), la consulta debe coincidir con todo para el tipo y ejecutarse como:

select num
from (select distinct q.num
       from cqqv q
       where q.bcode = '1234567' --this is variable
             and q.lb = 'AXCT' --this is variable
             --and q.type = 'privt' --this condition ignored because of "type=*" in input
             and q.edate > sysdate - 30 --this is variable
       order by dbms_random.value()) subq
where rownum <= 10; --this is variable

Sé que es posible usar sql dinámico para construir esta consulta sobre la marcha, pero me pregunto qué tipo de problemas de rendimiento podría causar, y si hay una mejor manera de hacerlo.