Compreendendo junções de loops aninhadas

A junção de loops aninhados, também denominada iteração aninhada, usa uma entrada de junção como a tabela de entrada externa (mostrada como a entrada superior no plano de execução) e outra como a tabela de entrada interna (na parte inferior). O loop externo consome a tabela de entrada externa linha por linha. O loop interno, executado para cada linha externa, pesquisa linhas correspondentes na tabela de entrada interna.

No caso mais simples, a pesquisa examina toda uma tabela ou índice; isto é chamado uma junção de loops aninhados naive. Se a pesquisa explorar um índice, será chamada junção de loops aninhados de índice. Se o índice for criado como parte do plano de consulta (e destruído na conclusão da consulta), será chamada uma junção de loops aninhados de índice temporário. Todas essas variantes são consideradas pelo otimizador de consultas.

Uma junção de loops aninhados será particularmente eficaz se a entrada externa for pequena e a entrada interna for pré-indexada e grande. Em muitas transações pequenas, como as que afetam apenas um pequeno conjunto de linhas, as junções de loops aninhados de índice são superiores às junções mescladas e junções de hash. Em consultas grandes, contudo, as junções de loops aninhados não são freqüentemente a melhor escolha.