2016-11-07 4 views
2

Ich denke, Abfrage 1 ist besser lesbar als Abfrage 2, aber ich würde gerne wissen, ob es einen Unterschied in Bezug auf die Leistung gibt?SQL Server-Abfrage - Was ist besser in der Leistung?

Abfrage 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 

oder

Abfrage 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

'FALL WENN col_pk IS NULL ist, welche von zwei' col_pk'? – anatol

+0

oops sorry .. table_1.col_pk stattdessen. Vielen Dank. Ich werde den Thread aktualisieren. –

Antwort

3

Die erste Abfrage wird wahrscheinlich eine bessere Leistung haben, weil es nur einen einzigen Scan von table_1 und table_2 erfordert.

+0

geschätzt. BTW, im Falle der Einstellung des Wertes? Abfrage 1 wird den Wert bedingt festlegen, so dass es zuerst das col_pk vor der Zuweisung des richtigen Werts überprüft. –

+1

Ja, aber diese Operation ist normalerweise weniger arbeitsintensiv als das Scannen und Verknüpfen von Tabellen. – mendosi

+0

Danke mendosi. Ich habe mehr Fragen in meinem Kopf, aber lass mich stattdessen einen anderen Thread erstellen, da es ein anderes Thema nehmen wird. Danke noch einmal. –

Verwandte Themen