Rendimiento de vista de MySQL

Tengo una tabla para aproximadamente 100,000 usuarios en ella.

Primer caso:

explain select state, count(*) as cnt from users where state = 'ca' 

Cuando hago un plan de explicación para la consulta anterior, obtengo el costo de 5200

Segundo caso:

 Create or replace view vw_users as select state, count(*) as cnt from users Explain select cnt from vw_users where state = 'ca' 

Cuando hago un plan de explicación en la segunda consulta, obtengo el costo de 100.000.

¿Cómo funciona la cláusula where en la vista? ¿La cláusula where se aplica después de que la vista recupera todas las filas? ¿Cómo soluciono este problema?

Se trata del algoritmo de visualización que se ha utilizado.

El algoritmo de combinación funciona bien con la mayoría de los índices de tabla y otras cosas, el algoritmo tentable no lo hace; en muchos casos, los índices se utilizarán directamente .

Y hay mucha basura que la fusión no admite

MERGE no se puede usar si la vista contiene alguna de las siguientes construcciones:

 * Aggregate functions (SUM(), MIN(), MAX(), COUNT(), and so forth) * DISTINCT * GROUP BY * HAVING * LIMIT * UNION or UNION ALL * Subquery in the select list * Refers only to literal values (in this case, there is no underlying table)