Performance de vue MySQL
j'ai une table pour environ 100 000 utilisateurs.
Premier Cas:
explain select state, count(*) as cnt from users where state = 'ca'
quand je fais un plan d'explication pour la requête ci-dessus je reçois le coût comme 5200
Deuxième Cas:
Create or replace view vw_users as select state, count(*) as cnt from users
Explain select cnt from vw_users where state = 'ca'
quand je fais un plan d'explication sur la deuxième requête je reçois le coût comme 100.000.
comment fonctionne la clause " où " dans la vue? Est-ce que la clause " où " est appliquée après que la vue récupère toutes les lignes? Comment puis-je résoudre ce problème?
1 réponses
c'est à propos de afficher l'algorithme ça a été utilisé.
fusionner algorithme fonctionne bien la plupart des index de table et autres joyeusetés - temptable algorithme n'est pas - dans de nombreux cas, votre index sera juste flat-out n'est pas utilisé du tout.
Et il y a beaucoup de conneries que l'opération de fusion ne prend pas en charge
la fusion ne peut pas être utilisée si la vue contient l'une des opérations suivantes construit:
* 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)