Dans SQL Server, quand dois-je utiliser une vue indexée au lieu d'une vraie table?

StackOverflow https://stackoverflow.com/questions/3861476

  •  27-09-2019
  •  | 
  •  

Question

Je sais que dans SQL Server, vous pouvez créer des index sur une vue, la vue enregistre les données de la table sous-jacente. Ensuite, vous pouvez interroger la vue. Mais, pourquoi je dois utiliser la vue au lieu de table?

Était-ce utile?

La solution

Vous voudrez peut-être utiliser en vue de simplifier sur les requêtes. Dans nos projets, le consensus est sur l'utilisation de vues pour les interfaces, et en particulier « interfaces de rapport ».

Imaginez que vous avez une table client et le gestionnaire veut un rapport tous les matins avec le nom du client, et le solde de leur compte (ou autre). Si vous programmez votre rapport sur la table, vous créez un lien entre votre rapport et votre table, ce qui change par la suite difficile.

D'autre part, si votre rapport frappe une vue, vous pouvez tourner librement la base de données; tant que la vue est le même les travaux du rapport, le directeur est heureux et vous êtes libre d'expérimenter avec la base de données. Vous voulez séparer les métadonnées client de la table principale du client? y aller et rejoindre les deux tables de la vue. Vous voulez dénormaliser l'info panier pour le client? pas de problème, la vue peut adapter ...

Pour être honnête, il est mon avis en tant que programmeur, mais d'autres utilisations on trouvera certainement par des gourous db:)

Autres conseils

Tableau A est où les données sont stockées physiquement.

Une vue est où les tables sont résumées ou regroupées pour faire des groupes de tables plus faciles à utiliser.

Une vue indexée permet une requête d'utiliser une vue, et pas besoin d'obtenir des données de la table sous-jacente, comme le point de vue a déjà les données, augmentant ainsi la performance.

Vous ne pouviez pas obtenir le même résultat avec des tables seulement, sans dénormaliser votre base de données, et donc potentiellement créer d'autres problèmes.

Un avantage d'utiliser une vue indexée est pour commander les résultats de 2 colonnes ou plus, où les colonnes sont dans différentes tables. à-dire, une vue qui est le résultat de Table1 et Table2 triés par table1.colonne1, table2.column2. Vous pouvez ensuite créer un index sur colonne1, colonne2 pour optimiser cette requête

Au fond, utilisez une vue:

  1. Lorsque vous utilisez la même requête complexe sur plusieurs tables, plusieurs fois.
  2. Lorsque le nouveau besoin du système pour lire les données de table vieux, mais ne regarde pas changer leur schéma perçu.

Les vues peuvent améliorer Répertorié les performances en créant l'indice plus spécifique sans augmenter la redondance.

Une vue est tout simplement une instruction SELECT qui a été donné un nom et stocké dans une base de données. Le principal avantage d'une vue est qu'une fois qu'elle est créée, il agit comme une table pour toutes les autres instructions SELECT que vous souhaitez écrire.

L'instruction select de la vue peut faire référence à des tables, d'autres vues et fonctions.

Vous pouvez créer un index sur la vue (vue indexée) pour améliorer les performances. Une vue indexée est mise à jour automatique, ce qui reflète immédiatement les modifications aux tables sous-jacentes.

Si votre vue indexée ne sélectionne que des colonnes d'une table, vous pouvez aussi bien placer l'index sur la table et requête tableau directement, la vue ne ferait que causer des frais généraux pour votre base de données. Toutefois, si votre instruction SELECT couvre plusieurs tables avec des jointures, etc. que vous pourriez gagner un gain de performances en plaçant un index sur la vue.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top