Considere uma junção A LEFT JOIN B ON A.id = B.a_id
:
B.a_id
é anulável -- a maioria, mas nem todos osB
registros apontam para umA
registro.A
pode, no máximo , ter apenas um registro correspondenteB
(lógica de negócios).- Nem todos os
A
registros têm uma correspondência emB
.
Existe uma maneira de dizer ao MSSQL que nunca haverá mais de uma correspondência A: B, permitindo assim que ele crie um atalho para a junção assim que uma correspondência for encontrada para um determinado A
registro?
Eu pensaria que tal otimização poderia acontecer se B.a_id
tivesse um índice único, mas isso não é possível, pois é anulável.
Complicando o problema: A e B estão em bancos de dados diferentes (mesma instância do MSSQL).
Se for importante, estou usando o SQL Server 2008 R2.
Resposta do Wiki a partir de um comentário sobre a pergunta de @ypercube :
Você pode usar um índice filtrado:
Consulte as Diretrizes de Design de Índice Filtrado