web-dev-qa-db-fra.com

Syntaxe 'créer une table à partir de la vue' dans mysql?

Je veux créer une table qui est un cache des résultats d'une vue. Existe-t-il un moyen simple de définir automatiquement la table à partir de la définition de la vue, ou devrai-je la bricolé à partir de show create table view?

37
user151841

Vous pouvez faire CREATE TABLE SELECT Depuis la vue pour le construire. Cela devrait dupliquer la structure de la vue en tant que nouveau tableau contenant toutes les lignes de la vue. Voici le référence de syntaxe MySQL pour cette instruction.

CREATE TABLE tbl_from_view AS    
  SELECT
    col1,
    col2,
    col3,
    col4,
    col5
  FROM your_view;

Notez que vous voudrez être très explicite dans vos sélections de colonnes. Il n'est pas conseillé de faire un SELECT * À partir de la vue source. Assurez-vous également que vous disposez d'alias pour toutes les colonnes calculées ou agrégées telles que COUNT(*), MAX(*), (col1 + col2), etc.

55
Michael Berkowski

J'ai également constaté que dans la sortie mysqldump, il existe des instructions qui créent la vue sous forme de tableau, juste avant de définir la vue. Je peux les analyser et les exécuter en tant que requêtes.

2
user151841