Domanda

Qualcuno ha esperienza di quando SQL Server 2008 R2 è in grado di corrispondere automaticamente vista indicizzata (noto anche come viste materializzate) che contengono unisce a una query?

Ad esempio la vista

select dbo.Orders.Date, dbo.OrderDetails.ProductID
from dbo.OrderDetails
join dbo.Orders on dbo.OrderDetails.OrderID = dbo.Orders.ID

Non può essere automaticamente abbinato alla stessa query esatto. Quando seleziono direttamente da questo punto di vista with (noexpand) ho effettivamente ottenere un piano di query molto più veloce che fa una scansione sul l'indice cluster della vista indicizzata. Posso ottenere SQL Server per fare questo abbinamento automatico? Ho un bel paio di domande e punti di vista e io non voglio fare riferimento manualmente la vista indicizzata ogni volta perché sto usando un O mapper.

Sono sulla versione Enterprise di SQL Server 2008 R2.

Edit: ho trovato la soluzione. SQL Server 2008 R2 non corrisponde viste indicizzate con più di 2 unisce automaticamente. Probabilmente sarebbe rallentare il processo di ottimizzazione troppo.

Modifica 2: la revisione di questo 2 anni dopo la questione è stato creato da me, non credo che la mia conclusione era corretta. Vista materializzata di corrispondenza è un processo molto fragile, con regole chiare che ho potuto trovare nel corso degli anni.

Certo, il seguente svolgere un ruolo:

  • Numero di join
  • Presenza di un predicato
  • ordine di join, sia nella vista e nella query
È stato utile?

Soluzione

Sono un po 'confuso su esattamente che cosa la tua domanda è; ma credo che questo vi darà ciò che si vuole:

http://msdn.microsoft.com/en-us/library /ms181151.aspx

Ci sono un sacco di strane condizioni arbitrarie apparentemente tale limite quando SQL Server utilizzerà un indice di vista in una query. Questa pagina documenta li per SQL Server 2008.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top