Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Desempenho:Subconsulta ou Junção


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.