2011-07-05 19 views
5

La pregunta lo dice todo. ¿Cuál es más rápido? ¿Y cuándo deberíamos usar view en lugar de subconsulta y viceversa cuando se trata de optimizar la velocidad?¿Cuál es la vista o sub consulta más rápida?

No tengo una cierta situación, pero estaba pensando en eso al intentar algunas cosas con vistas en mysql.

Respuesta

5

Ninguno es particularmente eficiente en MySQL. En cualquier caso, MySQL no almacena en caché los datos en las vistas, por lo que la vista simplemente agrega otro paso en la ejecución de la consulta. Esto hace que las vistas sean más lentas que las subconsultas. Consulte esta publicación en el blog para obtener información adicional http://www.mysqlperformanceblog.com/2007/08/12/mysql-view-as-performance-troublemaker/

Una posible alternativa (si puede tratar con datos desactualizados) son las vistas materializadas. Consulte Flexviews para obtener más información y una implementación.

+0

Muy buen artículo, especialmente los comentarios de Blakkky debajo de él. –

5

Un optimizador inteligente presentará el mismo plan de ejecución en ambos sentidos. Pero if había una diferencia, sería porque el optimizador era por alguna razón no capaz de predecir correctamente cómo se comportaría la vista, lo que significa que una subconsulta podría, en algunas circunstancias, tener una ventaja.

Pero eso está al lado del punto; este es un problema corrección. Las vistas y subquerys tienen diferentes propósitos. Utiliza vistas para proporcionar reutilización o seguridad del código. Alcanzar una subconsulta cuando debería usar una vista sin entender las implicaciones de seguridad y mantenimiento es una locura. La corrección supera el rendimiento.

+0

Ya veo. Entonces, básicamente, en cuanto a la velocidad, ¿son lo mismo? –

+0

@Yasen actualizó mi respuesta –

+0

Gracias Joel. Sé sobre los diferentes propósitos de vistas y subconsultas, pero quería saber si habrá alguna ganancia de velocidad si se usa una de ellas. –

Cuestiones relacionadas