2016-05-19 12 views
0

Kann mir jemand helfen, den SQL unten zu ändern, damit es schneller läuft? Vielen Dank.Wie kann ich diesen SELECT CASE schneller laufen lassen?

SELECT DISTINCT B.CLT_NBR , 
     CASE 
      WHEN B.CLT_NBR IN (SELECT CLT_NBR FROM A) THEN 'YES' 
      ELSE 'NO' 
     END AS CHECK 
FROM B 
+1

Führen Sie stattdessen eine LINKE VERBINDUNG durch. – jarlh

+0

Gibt es einen Index für CLT_NBR für jede Tabelle? –

Antwort

2

Verwendung links statt einer Unterabfrage beitreten:

SELECT DISTINCT B.CLT_NBR , 
     CASE 
      WHEN A.Id IS NOT NULL THEN 'YES' 
      ELSE 'NO' 
     END AS CHECK 
FROM B 
LEFT JOIN A ON(B.CLT_NBR = A.CLT_NBR) 

Hinweis: anstelle des A.Id ich verwendet habe Sie ein Primärschlüssel verwenden müssen.

+0

Warum nicht einfach 'A.CLT_NBR' verwenden? Und das ja und nein muss ersetzt werden :) – sagi

+0

... oder verwenden Sie IS NOT NULL statt IS NULL ... Danke für den Haken. zu deiner Frage, nur eine persönliche Vorliebe. –

Verwandte Themen