2009-06-11 11 views
1

pour enregistrer l'union d'une autre table avec seulement différent id j'ai 2 tables avec enregistrement en double, y compris le champ « Id », et j'ai besoin union eux.
Mais je pense que [union all] est beaucoup plus efficace que [union]
pour la raison qu'il n'a pas besoin de trier.comment par « Union Tous »

Ce qui suit est mon sql:..
SELECT *
DE [dbo] [Temps réel]
UNION ALL
SELECT *
DE [dbo] [Recherche] un
PAS EXISTS (
    SELECT TOP 1 1
    à partir de [DBO]. [Temps réel] b
    OÙ a.Id = b.Id
)
-vous avez des suggestions ou une déclaration plus élégante?

Répondre

1

Option 1 (vôtre): interrogez d'abord dbo.RealTime, puis interrogez dbo.Query, puis, pour chaque ligne de dbo.Query, effectuez une recherche sur dbo.Realtime.

Option 2 (UNION): interrogez dbo.RealTime, interrogez dbo.Query, puis supprimez les doublons.

Outre le fait que ces deux options donneront des résultats différents (la première option conservera les doublons obtenus à partir dbo.RealTime et dbo.Query), je dirais que l'option 2 sera très probablement moins de ressources depuis il n'a pas à interroger deux fois dbo.RealTime - à moins que (peut-être) dbo.RealTime soit plus petit que dbo.Query d'un ordre de grandeur.

+0

dbo.RealTime est beaucoup plus petit que dbo.Query. Je vous remercie ! – sesame

1

Votre exemple sql obtient le jeu d'enregistrements sans enregistrement dans la seconde table dont l'ID est identique mais peut-être que les autres champs sont différents.
Est-ce votre exigence?

+0

oui, c'est mon exigence. – sesame