Хранимые процедуры SQL Server содержат SQL или вызов для просмотра - PullRequest
3 голосов
/ 29 марта 2011

Лучше ли иметь ссылки на представления в хранимых процедурах SQL Server вместо кода SQL, содержащегося в представлении?

Я вижу много кода вроде:

ALTER PROCEDURE [dbo].[Report_65PlusLivingAlone]

As
Begin

---- Select all 3 groups from base table
Select 
    * 
INTO 
    #Temphouseholds
FROM
(
select  b.ReportYearDescription as CensusYear
        , Case When a.AggregationLevel = 'Minnesota' then 'Statewide'
               Else a.AggregationLevel
          End as AggregationLevel
        , a.PopulationType
        , a.PopulationSize
        , Case When a.PopulationType in 
                    ('Non-Family Households, Living Alone, Age 65 +'
                        ,'Living alone, age 65 and older') then 'households_livingalone'
                When a.PopulationType = 'Householders age 65 and older' then 'householders_65plus'
                Else 'total_households'
          End as PopulationGroups
        , Case  When b.ReportYearType = 'C'
                Then 'Current'
                Else 'Projected'
          End as censusgroups   
from    PublicReport_DSD.dbo.HouseholdCensusCountyInformation a
        , PublicReport_DSD.dbo.ReportYear b
where   a.PopulationType in ('Non-Family Households, Living Alone, Age 65 +'
                             ,'Living alone, age 65 and older'
                             ,'Householders age 65 and older'
                             ,'Total'
                            )
        and cast(a.CensusYear as varchar) = b.ReportYearDescription
        and b.ReportID = 18
        and b.IsActive = 1
) as Temphouseholds

, что я хочу переписать, чтобы SQL был в представлении. Добавляет ли представление дополнительную нагрузку или, как я подозреваю, дает серверу больше информации о том, что делает sp, чтобы он мог лучше оптимизировать sp?

Спасибо за информацию,

-Beth

1 Ответ

3 голосов
/ 29 марта 2011

Оптимизатор сервера Sql, вероятно, (вероятно, t-sql обычно) обрабатывает оба запроса одинаково - представление не предложит ничего дополнительного компилятору, если не будет дополнительного кода t-sql, подсказок или SARG. Если представление не проиндексировано должным образом , оно может действительно работать хуже .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...