RDBMs modernos, incluindo Oracle, otimizam a maioria das junções e subconsultas para o mesmo plano de execução.
Portanto, eu escreveria sua consulta da maneira mais simples para você e me concentraria em garantir que você otimizou totalmente seus índices.
Se você fornecer sua consulta final e seu esquema de banco de dados, poderemos oferecer sugestões detalhadas, incluindo informações sobre possíveis problemas de bloqueio.
Editar
Aqui estão algumas dicas gerais que se aplicam à sua consulta:
- Para junções, certifique-se de ter um índice nas colunas nas quais você está unindo. Certifique-se de aplicar um índice às colunas unidas em ambas as tabelas. Você pode pensar que só precisa do índice em uma direção, mas deve indexar as duas, pois às vezes o banco de dados determina que é melhor unir na direção oposta.
- Para cláusulas WHERE, verifique se você tem índices nas colunas mencionadas em WHERE.
- Para inserir muitas linhas, é melhor inserir todas em uma única consulta.
- Para inserir em uma tabela com um índice clusterizado, é melhor inserir valores incrementais para o índice clusterizado para que as novas linhas sejam anexadas ao final dos dados. Isso evita a reconstrução do índice e muitas vezes evita bloqueios nos registros existentes, o que tornaria as consultas SELECT mais lentas nas linhas existentes. Basicamente, as inserções se tornam menos dolorosas para outros usuários do sistema.