MISE À JOUR
Je pense qu'il était prématuré de demander cela. Après quelques tests supplémentaires, j'ai découvert que la performance ne s'est pas améliorée. Je vais exécuter quelques tests supplémentaires et publier des mises à jour ici. Jusque-là, ne prenez pas la peine de répondre à cela.SQL Query UNION Performance
J'ai eu une question comme ça ...
SELECT DISTINCT TOP 11 [Field_A]
FROM [#TempTable]
WHERE [Field_A] NOT IN (SELECT bo.[Id]
FROM [BusinessObject_Table] bo
UNION
SELECT boTemp.[Id]
FROM [#BusinessObject_Table] boTemp)
Cette requête prend une éternité pour exécuter un ensemble de données non négligeable. J'ai également ajouté l'index de CLUSTERED sur la colonne d'identification des tables de Temp, qui a donné un certain gain de performance, mais toujours, n'a pas réussi à compléter.
Je remplacé cette requête avec ce ...
SELECT DISTINCT TOP 11 [Field_A]
FROM [#TempTable]
WHERE [Field_A] NOT IN (SELECT bo.[Id]
FROM [BusinessObject_Table] bo)
AND [Field_A] NOT IN (SELECT boTemp.[Id]
FROM [#BusinessObject_Table] boTemp)
Ce terminé en quelques secondes. Quelqu'un peut-il expliquer ce qui s'est passé ici?
MISES À JOUR: Je pensais que les deux requêtes sont les mêmes. C'est ce dont j'ai besoin.
BusinessObject_Table has following Ids: 1, 2, 3
#BusinessObject_Table has: 3, 4, 5
TempTable has rows whose Field_A values are: 1, 2, 3, 4, 6
Le résultat de la requête doit être: 6 (changement de note dans la requête ci-dessus)
je vais essayer d'obtenir les plans de requête et après les ici.
Veuillez poster les plans. Les requêtes font des choses différentes de toute façon. Le second vérifie qu'il n'apparaît pas dans les deux tables. La première ou l'autre table. Le premier aurait besoin d'utiliser 'intersect' ou le' '' '' '' 'soit identique. –