Quelqu'un peut-il expliquer ce comportement ou comment le contourner?Requête SQL lente en raison de la jointure interne et gauche?
Si vous exécutez cette requête:
select *
from TblA
left join freetexttable (TblB, *, 'query') on TblA.ID = [Key]
inner join DifferentDbCatalog.dbo.TblC on TblA.ID = TblC.TblAID
Il sera très très lent.
Si vous modifiez cette requête pour utiliser deux jointures internes au lieu d'une jointure à gauche, ce sera très rapide. Si vous le changez pour utiliser deux jointures à gauche au lieu d'une jointure interne, ce sera très rapide.
Vous pouvez observer ce même comportement si vous utilisez également une variable de table SQL à la place du fichier freetexttable. Le problème de performance se pose chaque fois que vous avez une variable de table (ou freetexttable) et une table dans un catalogue de base de données différent où l'un est dans une jointure interne et l'autre dans une jointure à gauche.
Est-ce que quelqu'un sait pourquoi c'est lent, ou comment l'accélérer?