web-dev-qa-db-fra.com

Quelle différence entre la vue standard et la vue indexée dans SQL Server

J'apprends que la vue indexée détient les données des tables de base pendant que la vue standard ne contient pas de données. Cela signifie que la vue indexée nécessite une mémoire et une vue standard.

La vue indexée doit être liée avec l'objet Schema.Je suis également confondu sur le point "*" ne permet pas d'autoriser l'objet Schema-Bind.Pour:

create view viewname as select * from tablename

La déclaration ci-dessus ne peut pas fonctionner. Pourquoi?

7
user8365
  • Une vue indexée est physiquement stockée ("matérialisée") sur disque = nécessite une mémoire
  • Une vue standard est simplement une macro extensible: il n'y a pas de persistance des données et les tables de base sont toujours utilisées.

Autres notes:

  • Les deux renvoient les données correctes des tables de base
  • SQL Server examinera s'il faut utiliser la vue indexée ou simplement l'agrandir comme une macro (sujet à l'édition et indication noexpand)

SELECT * est une mauvaise pratique quand même, mais * signifie que vous ne pouvez pas qualifier toutes les colonnes requises pour les vues indexées

14
gbn