¿Puede alguien explicarme en inglés simple cómo funciona un índice en una vista? Tengo una comprensión bastante simple de los índices en las tablas; ¿Cómo funcionaría la indexación de una vista de forma diferente a simplemente dejar que los índices en las tablas subyacentes hicieran su trabajo de forma natural?¿Cómo funcionan los índices en las vistas?
Respuesta
Digamos que tienes una vista que limita la mesa para ciertas filas:
create view dbo.vw_HotProducts
as
select * from dbo.Products where Hot = 1
Ahora bien, si se crea un índice en este punto de vista, el índice sólo contiene productos calientes. Puede compararlo para almacenar el resultado de la vista en una tabla temporal. Esto puede ser muy útil para consultas complicadas con múltiples combinaciones; básicamente, su salida está en la memoria caché.
La gran desventaja de las vistas indizadas es que se vuelven a crear cada vez que cambian los datos de la tabla subyacente. Eso restringe el uso de vistas indizadas a datos que no cambian a menudo, generalmente en un almacén de datos o en un entorno de inteligencia empresarial.
Ver http://msdn.microsoft.com/en-us/library/aa258260(SQL.80).aspx
La creación de un índice agrupado único en una vista mejora el rendimiento de las consultas porque la vista se almacena en la base de datos de la misma manera una tabla con un índice agrupado se almacena.
La vista se transforma de una vista adecuada en una mesa. La definición de vista se usa para actualizar esta tabla.
Oracle llama a estas "vistas materializadas".
y dado que una vista indizada ahora realmente es una tabla mantenida por el sistema, también se pueden crear índices adicionales no agrupados en ella –
Ambos: * puede * crear índices NC en una vista. Lo hago .. – gbn
Parece que el primer índice que crea debe ser único y agrupado para definir la tabla de caché. ¡Los índices adicionales pueden no ser únicos, como dice marc_s! – Andomar
Una vista en sí misma no es real o "persistente", y no tiene ningún beneficio de rendimiento. Es simplemente un macro that's expanded.
Agregue un índice y existe físicamente (persistió), por lo que el optimizador considerará usarlo. No es un macro entonces.
Estoy seguro de que Oracle los llama "vistas materializadas", que es un nombre mejor.
Un relacionada FYI: una columna calculada tiene una opción PERSISTED que hace lo mismo ...
+1 por el FYI - gracias –
- 1. ¿Cómo funcionan los índices compuestos?
- 2. Conocimiento fundamental de cómo funcionan las vistas y Pathauto juntos
- 3. ¿Cómo funcionan las cookies?
- 4. ¿Cómo funcionan los greenlets?
- 5. ¿Cómo almacena MySQL los índices?
- 6. Cómo desactivar los índices (temporales) en MongoDB
- 7. ¿Cómo funcionan las bases de datos internamente?
- 8. ¿Cómo se enumeran todas las vistas indizadas en SQL Server?
- 9. ¿Cómo funcionan las pasarelas SMS?
- 10. ¿Cómo funcionan las declaraciones preparadas?
- 11. ¿Cómo funcionan las claves externas?
- 12. ¿Cómo funcionan las pasarelas API?
- 13. Obtenga los índices de las filas seleccionadas en GridView
- 14. cómo encontrar todos los índices y sus columnas de tablas, vistas y sinónimos de Oracle
- 15. ¿Cómo funcionan las banderas en C?
- 16. Cómo funcionan las sesiones en Codeigniter
- 17. ¿Cómo funcionan las actualizaciones en tiempo real?
- 18. ¿Cómo funcionan las funciones trigonométricas?
- 19. ¿Cómo funcionan los frameworks simulados?
- 20. Java: cómo funcionan las matrices
- 21. ¿Cómo funcionan los modelos Django?
- 22. ¿Cómo funcionan los eventos débiles?
- 23. ¿Cómo funcionan las excepciones en Haskell?
- 24. ¿Cómo funcionan las ecuaciones matemáticas en Java?
- 25. Por qué las variables de instancia de mi controlador no funcionan en vistas (Rails)
- 26. ¿Cómo funcionan los eventos virtuales en C#?
- 27. ¿Cómo funcionan los métodos asíncronos en C#?
- 28. ¿Cómo funcionan los perfiladores .NET?
- 29. ¿Cómo funcionan los punteros compartidos?
- 30. ¿Cómo funcionan los Intents internamente?
podemos crear un índice sobre la base de una columna (que no son clave) de vista? –
@ Q8-coder: un índice en una vista debe agruparse y ser único. Por lo tanto, puede elegir una columna que no sea clave, siempre que identifique de manera única una fila en el resultado de la vista – Andomar
@Andomar: no es cierto que una vista indexada se vuelva a crear en cualquier cambio de datos. SQL Server modificará la vista materializada para reflejar cualquier cambio en las tablas base. Es por eso que SQL Server impone tantas restricciones sobre qué vistas se pueden materializar: pocas agregaciones, sin uniones externas, sin uniones, sin uniones automáticas, etc. Concedido, solo modifica los datos a través de INSERTAR/ELIMINAR y no ACTUALIZAR. Pero he visto vistas indexadas utilizadas con éxito en una aplicación OLTP uniendo mesas de millones de filas. YMMV – Tadmas