web-dev-qa-db-fra.com

Pourquoi certaines opinions sont-elles énumérées comme matérialisées dans MySQL Expliquer des déclarations si des vues matérialisées n'existent pas dans MySQL?

Espérons que la question est explicite. J'ai lu que les vues matérialisées n'existent pas dans MySQL, mais parfois, je vois parfois quelque chose comme ça dans EXPLAIN

statements

Quelqu'un peut-il effacer cela pour moi? Qu'est-ce que "(matérialisé)" signifie si des vues matérialisées ne sont pas une chose dans MySQL? Utilisation de MySQL Server 5.6, Workbench 6.3.

2
bjk116

Au monde extérieur (si je ne me trompe pas), une "vue matérialisée" est une table permanente qui est automatiquement insérée/mise à jour en fonction des données qui circulent dans une autre table.

Dans MySQL, il a une signification plutôt limitée. Il fait référence à certaines tables "dérivées" (par exemple, FROM ( SELECT ... )). L'optimiseur a plusieurs façons de traiter de telles constructions.

  • Avant 5,6, pour un seul tel constructeur, l'optimiseur utiliserait simplement cela comme la première "table" sans avoir à "se matérialiser".
  • Avant 5.6, pour de multiples tables dérivées (pour FROM (SELECT...) JOIN (SELECT...)), l'optimiseur devrait réexécuter à plusieurs reprises toutes sauf la première table dérivée.
  • 5.6 Introduit la capacité automatique de créer une table Temp pour l'une des tables dérivées. En outre, l'optimiseur est devenue assez intelligente pour découvrir l'index optimal de cette table Temp et la créer. (Une note latérale: une réécriture appropriée de la requête complète peut généralement mieux performer.)

Il n'y a essentiellement rien que vous, le programmeur, puisse faire pour contrôler cette version de "vue matérialisée". (Eh bien, réécrivez pour éviter le besoin.)

5.7 et 8.0 ont encore plus d'améliorations de performance. Mais toujours pas de "vue matérialisée" car le monde extérieur le sait.

4
Rick James

Explorer le format de sortie Explique

  • <matérialiser> ( fragment de requête)

La matérialisation des sous-requêtes est utilisée.

0
Akina