Mysql, vue utilise des scénarios d'utilisation, les problèmes de performance et précautions

Original: https: //blog.csdn.net/chuangxin/article/details/84574557

« Guide définitif SQLite » dans la vue de l'auteur est défini ainsi: une vue qui est une table virtuelle, appelée aussi les tables dérivées, parce que leur contenu proviennent des résultats d'autres tables. Bien que la vue ressemble et se sent la même chose que la forme de base, mais ils ne sont pas la table de base. Le contenu de base de la table sont persistantes, et le point de vue du contenu sont générées dynamiquement pendant l'utilisation.

1, vues, créer, modifier la syntaxe SQL
manuelle 5.7 14/01/21 référence MySql VIEW Syntaxe CREER

CREATE [OR REPLACE] 
[ALGORITHME = {UNDEFINED | MERGE | TEMPTABLE}] [DEFINER = {user | CURRENT_USER}] 
[SQL SECURITY {DEFINER | INVOKER}] 
VIEW nom_vue [(column_list)] 
AS select_statement 
[AVEC [CASCADE | LOCAL] CHECK OPTION]

 


Sqlyog, Navicat autres outils de visualisation client peut définir, modifier la vue, et donc omis.

2, vues, utilisation et scénarios d'utilisation
fins:
vue du tout un but à mon avis: simplifier la requête sql, l' amélioration de l' efficacité du développement. Si une autre utilisation qui est compatible avec l'ancienne structure de la table.

Les scénarios d'utilisation:
1) la nécessité des colonnes calculées, paradigme de la conception de base de données exige que nous réduisions champ redondant, maintenant beaucoup de tables de données ne sont pas des champs calculés de colonne, tels que les bons de commande: le prix, la quantité, le taux d'imposition, le montant de l' impôt, probablement pas sans montant de la taxe, l' impôt, et ceux - ci seront utilisés dans le domaine il y a beaucoup de rapports, afin que nous puissions créer une vue qui contient un champ de colonne calculée pour résoudre ce problème.

2) l'agrégation de champ tables différentes, la réorganisation de l'information, tels que: lorsque le croupier commis habituellement, le greffier a généralement un lien de subordination (gestionnaire de compte, directeur régional, directeur régional, etc.), donc nous avons besoin de voir pour voir le vendeur du concessionnaire qui conduit de droite vendeur qui? Directeur régional du greffier correspondant, qui est le directeur régional (peut-être NULL)? Nous pouvons donc co-concessionnaire table, informations sur les ventes de table, ont déclaré des ventes relations définies dans un concessionnaire de tableau.

3) les besoins de sécurité, les systèmes existants principalement premiers besoins d'intégration, tels que: les données du système besoin xx, aucune interface, comment faire? Fonctionnement direct de la base de données, cette fois impliquant la sécurité des données, l'utilisation rationnelle de vue, il peut réduire le nombre de travail autorisé et assurer la sécurité des données. Le système actuel, la quasi-totalité nouvellement construit interface api exposée, donc accorder plus d'attention à la sécurité des données dans les aspects de l'interface granularité d'authentification et de données.

4) compatible avec les anciennes tables de données, ont rencontré un tel problème.
La société indépendante a développé le système de gestion des stocks, d' abord pour un usage personnel, et plus tard avec des entreprises partenaires, donc je prévois de la technologie Saas, avait fait l' un des plus grands changements est que presque toutes les tables en utilisant l'ajout d'un champ unitaire (co_id). Un autre triste rappel que le système d'approvisionnement externalisation utilise une seule table, le système a cessé de les entretenir, et continua à être utilisé. Ainsi , il a créé une entreprise appartenant à co_id = voir, du nom de la table de commande d'origine, et le tableau de commande d'origine dans le nouveau nom de la table. En raison de l' externalisation du système peut continuer à utiliser, et les données ne pose aucun problème.

3, les performances de la vue et les précautions
doivent sql simplifier et d' améliorer l' efficacité du développement, mais aussi d' améliorer les performances, ce qui est un peu de poisson et ne peut pas avoir à la fois, sans parler d' un petit poulet de requête MySql faible, comment faire? Ma suggestion est pas si mal mauvaise performance sur la bonne vue peut être obtenue en utilisant les données attendues. Comment ne pas aggraver la performance?
MySQL deux algorithmes de traitement vue, et fait référence MERGE TEMPTABLE.
Vous pouvez spécifier l'algorithme à utiliser lors de l' exécution instruction « CREATE VIEW ». Ne pas afficher les mots spécifiques, Mysql algorithme de fusion est utilisé par défaut.

MERGE, va se fondre dans la vue principale sql requête SQL, la re-constituer une nouvelle requêtes SQL. En ligne il y a un très bon héros disent « assez semblable à la langue C l' expansion macro, »
le TempTable, voir le texte destiné à connaître, il est de faire table temporaire pour afficher un seul processus.
Le soi-disant MERGE fait référence à l'opération de processus lié à une vue, une vue de l'opération sera élargie conformément à la définition de la vue, un peu similaire à la langue C l' expansion macro.
En général, quand rien ne peut utiliser le mode de traitement de l' algorithme MERGE problèmes de performances de MySQL, car vous pouvez utiliser l'index, algorithme d' optimisation requête MySQL, mais pas l' algorithme de MERGE peut être utilisé à tout moment. En fait, tant que la définition de la vue un peu compliqué, MySQL est impossible d'utiliser l'algorithme de fusion. Précise - à - dire tant que la définition de la vue utilise les blocs de construction suivants ne peuvent pas utiliser l' algorithme SQL MERGE:

Les fonctions d' agrégat 
DISTINCT 
GROUP BY 
having 
opérations ensemblistes (UNION, UNION ALL) 
sous - requêtes

 

Pour la définition de vue complexe, MySQL utilisé dans une méthode de maintien du statu quo, à savoir, pour effectuer la définition de la vue, la table temporaire en utilisant le résultat enregistré, de sorte que la manipulation ultérieure de vue de l'opération se traduit par une table temporaire. Ne peut pas dire que du point de vue de la conception de logiciels à partir d'une seule vue, méthode telle est très élégant, mais d'un point de vue de la performance, cette approche est également très pauvre.

Attention:
1) essayer d'utiliser des algorithmes de fusion, la définition de vue pour éviter DISTINCT, GROUP BY, etc. Une collection d'opérations connexes;
2) Si la vue est complexe en utilisant TEMPTABLE, alors pensez à des façons de réduire le nombre d'enregistrements TempTable.

Je suppose que tu aimes

Origine www.cnblogs.com/lvchengda/p/12574882.html
conseillé
Classement