sql >> Base de Datos >  >> RDS >> Mysql

Mysql - EXPLAIN SELECT from a VIEW está buscando en todas las filas de la tabla principal

Porque una vista no es un precompilado consulta o un resultado almacenado , es un predefinido consulta. Ejecuta las sentencias SELECT en la vista, siempre . De lo contrario, una vista nunca se actualizaría. Una vista es una representación de una consulta. Es una abreviatura conveniente para el programador, pero no para la máquina.

En otras palabras, cuando

SELECT something FROM YourView

Y YourView está definido por

CREATE VIEW YourView AS SELECT stuff FROM sometable 
INNER JOIN othertable ON sometable.column = othertable.column

lo que realmente se está ejecutando es

 SELECT something FROM 
(SELECT stuff FROM sometable 
INNER JOIN othertable ON sometable.column = othertable.column)

Si desea almacenar un resultado, debe usar una tabla agregada.