Eu tenho que usar exibições indexadas para alcançar o desempenho. Como posso ver nesta tabela de comparação , a edição padrão não oferece suporte a exibições indexadas. Mas BOL diz:
As exibições indexadas podem ser criadas em qualquer edição do SQL Server. No SQL Server Enterprise, o otimizador de consulta considera automaticamente a exibição indexada. Para usar uma exibição indexada em todas as outras edições, a dica de tabela NOEXPAND deve ser usada.
Então vai funcionar (estou falando sobre desempenho)
select * from dbo.OrderTotals with (noexpand, index=IXCU_OrderTotals)
na edição SQL Server Standard assim como funciona
select * from dbo.OrderTotals
no Enterprise?
Aqui está o código para visualização:
CREATE VIEW dbo.OrderTotals
WITH SCHEMABINDING
AS
select
OrderId = r.OrderId
, TotalQty = SUM(r.Quantity)
, TotalGrossConsid = SUM(r.Price * r.Quantity)
, XCount = COUNT_BIG(*)
from dbo.Order r
group by r.OrderId
CREATE UNIQUE CLUSTERED INDEX IXCU_OrderTotals ON OrderTotals (OrderId)
A diferença é que a edição Enterprise sem a dica pode decidir não usar a visualização indexada, mas sim as tabelas base.
Minha experiência pessoal é que o SQL Server é um pouco estúpido nisso. Quase sempre tenho que usar a dica: a consulta é mais rápida com muito menos IO, embora o plano "pareça" pior com uma varredura na exibição, não no índice, nas tabelas base. E funciona de forma mais consistente também
YMMV claro :-)
Então, para responder, vai (deveria?) funcionar da mesma forma com base no que vi. Outras pessoas podem ter experiências diferentes e estou interessado em outras respostas
Para evitar o uso da dica em todos os lugares, você pode agrupar a exibição indexada em outra exibição com a dica: as dicas propagadas para dentro de todas as consultas externas terão NOEXPAND automaticamente.