2009-08-28 5 views
2

J'utilise sql server 2008 et j'ai commencé à trouver en utilisant des vues indexées qui m'aident à accélérer certaines de mes requêtes ... comme mon schéma pas basique.Je ne sais pas si je comprends ce qu'une vue indexée fait dans les coulisses, dans SqlServer

Donc, si j'ai une table qui est la suivante ...

**ParentTable 
ParentId INT PK IDENTITY 
Name VARCHAR(MAX) 

**ChildTable 
ChildId INT PK IDENTITY 
ParentId INT (FK to the table above) 
Name VARCHAR(MAX) 
Boundary GEOGRAPHY 
CentrePoint GEOGRAPHY 
CentrePointFlattened GEOMETRY 

Donc, pour chaque ligne de la table parent, il peut avoir de nombreux enfants de zéro. Premièrement, si je fais une vue indexée des enfants, cela ne fonctionnera pas si le ParentId déposé peut être nullable. Donc j'ai besoin de le faire.

Maintenant la question.

J'ai une vue d'index des enfants table de join'd intérieure à la table des parents (note que je ne fais que l'indexation certains des champs de deux tables) ...

(pseduo sql code) 
ParentId INT 
Name VARCHAR(MAX) AS ParentName 
ChildId INT 
Name VARCHAR(MAX) as ChildName 
Boundary GEOGRAPHY 

maintenant, sont les données pour ces 5 champs sérialisés/copiés à un autre emplacement à nouveau? ou l'index ne crée-t-il que des ID d'index correspondant aux données de la table?

Répondre

2

Oui. Vue indexée est fondamentalement une autre invisible table qui est mis à jour automatiquement que les tables sous-jacentes changent.

+0

mais quel est le contenu de cette table? la même chose que la table d'origine? donc j'aurais deux copies des données GEOGRAPHY? ou est-ce que cette deuxième table _invisible_ ne contient que des nombres, qui sont des index vers les différentes colonnes, etc? –

+0

Le "résultat de l'interrogation" (quelle que soit la colonne incluse dans la vue) sera stocké dans l'index. Tout comme une table qui stocke toutes les données de la colonne. Les pointeurs vers les lignes de la table d'origine ne sont pas stockés (il n'y a pas nécessairement une relation un à un entre les données dans la vue et les tables de support, pensez aux jointures et aux choses calculées) –

+0

holy molly! Je pourrais expliquer pourquoi ma taille de DB est ... bien, devenant massive: P –

Questions connexes