0

Ich habe einen Code, der im Grunde der folgenden LogikWie wird die folgende Logik zur Leistungsverbesserung umprogrammiert? Details in der Beschreibung

select something 
from few tables 
where not exists (select query with some logic, say L1) 

union all 

select query with logic L1 

Wie Sie die Auswahlabfrage mit Logik L1 wird ausgeführt zweimal sehen implementiert. Es ist eine ziemlich große Logik und könnte einige Zeit dauern, um zu laufen. Gibt es den Code irgendwie neu zu formatieren, um die Ausführung zu verbessern?

+0

Sicher. Führen Sie diese Abfrage aus und speichern Sie sie in einer [temporären Tabelle] (http://stackoverflow.com/a/64891/703644) – TheNorthWes

+0

CTE qill wird effizienter, imo –

+0

@AdmiralAdama Kann ich das mit nur DML-Zugriff tun? – AntonyP

Antwort

1

können Sie ein CTE verwenden. https://msdn.microsoft.com/en-us/library/ms175972.aspx Zum Beispiel so etwas;

;With L1 as (Select query with some logic, say L1) 
Select Something 
from few tables 
where not exists (select * from L1) 
union all 
Select * from L1 
+0

Die Abfrage wird noch zweimal ausgeführt. Dies spart nur Tipparbeit. –

+0

nicht mit (nolock) vergessen, wenn ein schmutziges Lesen in Ordnung ist –

0

Warum nicht in eine einzige Aussage einfügen? Nicht sicher, was die Struktur ist, aber hier ist die Idee:

Select 
Something1 
,Something2 
,Something3 
,Case When L1 Is Not Null 'Case1' 
      Else 'Case2' 
     End AS Status 
FROM Some Table or view