Pregunta

¿Alguien tiene experiencia de cuando SQL Server 2008 R2 es capaz de igualar automáticamente vista indizada (también conocido como vistas materializadas) que contienen une a una consulta?

Por ejemplo la vista

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

Puede no ser emparejado automáticamente a la misma consulta exacta. Cuando selecciono directamente desde este punto de vista with (noexpand) De hecho, me sale un mucho más rápido de consultas plan que realiza un escaneo en el índice agrupado de la vista indizada. ¿Puedo obtener SQL Server para hacer este juego de forma automática? Tengo un buen número de consultas y vistas y no quiero hacer referencia a la vista indizada manualmente cada vez porque estoy utilizando un OR asignador.

Estoy en la edición Enterprise de SQL Server 2008 R2.

Edit: He encontrado la solución. SQL Server 2008 R2 no coincide con vistas indizadas con más de 2 se une de forma automática. Probablemente sería más lento el proceso de optimización demasiado.

Editar 2: Revisión de este 2 años después de la pregunta fue creado por mí, no creo que mi conclusión era correcta. Materializado juego de la visión es un proceso muy frágil, sin reglas claras que he podido encontrar en los últimos años.

Desde luego, la siguiente juegan un papel:

  • El número de combinaciones
  • La presencia de un predicado
  • orden de combinación, tanto en la vista y en la consulta
¿Fue útil?

Solución

Soy un poco borroso en exactamente lo que su pregunta es; pero creo que esto le dará lo que quiere:

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

Hay una gran cantidad de condiciones extrañas y arbitrarias de apariencia de ese límite cuando SQL Server utilizará un índice de vista en una consulta. En esta página les documentos para SQL Server 2008.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top