2016-11-07 1 views
2

Je pense que la requête 1 est plus lisible que la requête 2, mais je voudrais savoir s'il y a une différence entre eux en termes de performance?Requête SQL Server - Quelle est la meilleure performance?

Recherche 1

UPDATE table_1 
SET col_1 = 
     CASE WHEN table_1.col_pk IS NULL THEN value1 
      ELSE value2 
     END 
FROM table_1 
LEFT JOIN table_2 ON table_1.col_pk = table_2.col_pk 

ou

Interrogation 2

UPDATE table_1 
SET col_1 = value1 
FROM table_1 
LEFT JOIN table_2 ON table_1.col_pk = table_2.col_pk 
WHERE table_1.col_pk IS NULL 

UPDATE table_1 
SET col_1 = value2 
FROM table_1 
INNER JOIN table_2 ON table_1.col_pk = table_2.col_pk 
+4

benchmark ........... –

+0

'CASE QUAND COL_PK IS NULL' lequel de deux' col_pk'? – anatol

+0

oups désolé .. table_1.col_pk à la place. Merci. Je vais mettre à jour le fil. –

Répondre

3

La première requête aura probablement de meilleures performances car il ne nécessite qu'un seul balayage de table_1 et table_2.

+0

Apprécié. Btw, en cas de réglage de la valeur? La requête 1 définira la valeur de façon conditionnelle, ainsi elle vérifiera d'abord le col_pk avant l'affectation de la valeur correcte. –

+1

Oui, mais cette opération est généralement moins fastidieuse que l'analyse et la jonction de tables. – mendosi

+0

Merci mendosi. J'ai plus de questions dans mon esprit mais laissez-moi créer un autre fil à la place, car cela prendra un sujet différent. Merci encore. –