У меня есть пользовательский вид, который я создал в sql с внешним применением, который возвращает многолетний опыт работы пользователя в соответствии с их записями о занятости.Внешние приложения SQL Server, вызывающие основную нагрузку на процессор
Когда я отслеживал стоимость моих операторов SQL в мониторе активности (диспетчер SQL Enterprise), он говорит, что эта часть в представлении вызывает 25% довольно большой стоимости ЦП в плане выполнения.
Я пытаюсь разработать более эффективный способ приведения этой метрики в представление без дополнительных накладных расходов.
ЗДЕСЬ это применить ...
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
В любом случае, вы фактически выбираете и, следовательно, соединяете несколько записей в запросе внутри OUTER APPLY - вы не применяете какую-либо группировку - будет job_history (потенциальный ly) имеют несколько записей для каждого сотрудника? – Cato
Вам нужно, чтобы внешняя применялась для вызовов функций, когда вы не используете функции, которые вы можете использовать для соединения. – ajeh