vistas vista varias una tablas sintaxis parametros optimizar llamar lentas ejemplos ejemplo create crear consultas con como mysql stored-procedures views

vista - view mysql ejemplo



Ventaja de usar Views en MySQL (2)

Puede restringir a los usuarios a la vista en lugar de las tablas subyacentes, mejorando así la seguridad.

Aprendí que las vistas se pueden usar para crear "vistas de tabla" personalizadas (por así decirlo) que agregan datos relacionados de varias tablas.

Mi pregunta es: ¿cuáles son las ventajas de las vistas? Específicamente, digamos que tengo dos tablas:

event | eid, typeid, name eventtype | typeid, max_team_members

Ahora creo una vista:

eventdetails | event.eid, event.name, eventtype.max_team_members | where event.typeid=eventtype.typeid

Ahora, si quiero permitir el máximo número de miembros en un equipo para algún event , podría:

  • usa la vista
  • hacer una consulta de unión (o tal vez un procedimiento almacenado).

¿Cuáles serían mis ventajas / desventajas en cada método?

Otra consulta: si los datos en los eventos de tabla y tipo de evento se actualizan, ¿hay alguna sobrecarga relacionada con la actualización de los datos en la vista (considerando que almacena en caché los datos resultantes)?


Una vista no se almacena por separado: cuando consulta una vista, la vista se reemplaza con la definición de esa vista. Entonces, los cambios en los datos en las tablas aparecerán inmediatamente a través de la vista.

Además de la característica de seguridad señalada anteriormente:

Si está escribiendo una gran cantidad de consultas que realizarían esa unión, esto tiene en cuenta ese código SQL. Como hacer algunas operaciones en una función utilizada en varios lugares, puede hacer que su código sea más fácil de leer / escribir / depurar.

También le permitiría cambiar cómo se realiza la unión en el futuro en un solo lugar. Tal vez una relación de uno a muchos podría convertirse en una relación de muchos a muchos, introduciendo una mesa extra en la unión. O puede decidir desnormalizar e incluir todos los campos de tipo de evento en cada registro de evento para que no tenga que unirse cada vez (espacio de negociación para el tiempo de ejecución de la consulta).

Podrías dividir aún más las tablas más tarde, cambiándolas a una combinación de 3 vías, y otras consultas usando la vista no tendrían que ser reescritas.

Puede agregar nuevas columnas a la (s) tabla (s) y cambiar la vista para omitir las nuevas columnas, de modo que algunas consultas anteriores que usan "seleccionar *" no se rompan cuando cambia las definiciones de la tabla.