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

Condições de junção em várias colunas versus junção única em colunas concatenadas?


Acho que a versão com concatenação será praticamente sempre mais lenta.

Se alguma das colunas que você está comparando individualmente tiver índices, o banco de dados normalmente poderá usar os índices para otimizar a junção. Quando você compara concatenações, ele precisa realizar verificações de tabela completas, pois o resultado de um cálculo não estará no índice.

E mesmo que as colunas não estejam indexadas, o banco de dados ainda pode realizar as comparações com mais eficiência. Ele compara um par de colunas por vez e pode parar assim que uma dessas comparações falhar. Ao usar a concatenação, primeiro é necessário combinar todas as colunas, em ambas as linhas, e depois fazer uma comparação de strings.

Finalmente, se alguma das colunas for numérica, a concatenação exigirá a etapa adicional de converter o número em uma string.