Ich habe eine Benutzeransicht, die ich in Sql mit einer äußeren Anwendung erstellt habe, die die Menge an Jahren Erfahrung bringt der Benutzer hat nach ihren Beschäftigungsdaten zurück.SQL Server äußere Anwendung verursacht große CPU-Belastung
Wenn ich die Kosten meiner SQL-Anweisungen im Aktivitätsmonitor (SQL Enterprise Manager) überwacht, heißt es, dass dieser Teil in der Ansicht 25% eines ziemlich großen CPU-Preises im Ausführungsplan verursacht.
Ich versuche, eine effektivere Methode zu erarbeiten, diese Metrik ohne zusätzlichen Aufwand in die Ansicht zu bringen.
Hier ist die Anwendung ...
SELECT *
FROM users U <BLAH BLAH BLAH> OUTER apply
(SELECT COALESCE (Year(Getdate()) - Min(StartYear), 0) AS YearsWorkExp
FROM dbo.job_history
WHERE (userid = U.userid)) AS WorkExp
auf jeden Fall sind Sie tatsächlich auswählen und daher mehrere Datensätze in der Abfrage innerhalb der OUTER APPLY verbinden - Sie keine Gruppierung anwenden - wird job_history (potentiell ly) mehrere Datensätze für jeden Mitarbeiter haben? – Cato
Sie müssen äußere gelten für die Funktionsaufrufe, wenn Sie keine Funktionen verwenden können Sie Joins verwenden. – ajeh