> Tech > Créer une vue indexée

Créer une vue indexée

Tech - Par iTPro - Publié le 24 juin 2010
email

Maintenant que nous avons vu ce qu'on peut et ne peut pas mettre à  l'intérieur de la définition d'une vue, vous voilà  prêt à  créer une vue indexée. La première étape consiste à  définir la vue, comme décrit dans le listing 1. Remarquez la clause with SCHEMABINDING et la spécification

Créer une vue indexée

du nom du propriétaire (dbo) de
la table. à€ ce stade, on dispose d’une vue classique (une instruction SELECT qui
n’utilise aucun espace de stockage. En fait, si on exécute la procédure cataloguée
système sp_spaceused sur cette vue, on obtient le message d’erreur suivant :

Server: Msg 15235, Level 16, State 1,
Procedure sp_spaceused, Line 91
Views do not have space allocated.

Pour créer une vue indexée, il est nécessaire de créer un index clusterisé unique
sur la vue. L’instruction ci-après définit un index clusterisé unique, Product_Totals,
sur la vue :

CREATE UNIQUE CLUSTERED INDEX PV_IDX on Product_Totals(productid)

Après avoir créé l’index, on peut à  nouveau exécuter la procédure sp_spaceused.
On obtient des résultats semblables à  ceux de la figure 1.
Les données qui composent la vue indexée sont persistantes, la vue indexée enregistrant
les données au niveau feuille de l’index clusterisé. On pourrait construire quelque
chose de similaire en utilisant des tables temporaires pour enregistrer les données
intéressantes. Toutefois, une table temporaire est statique, et ne reflète pas
les changements intervenant aux niveau des données sous-jacentes. En revanche,
SQL Server maintient les vues indexées automatiquement, en mettant à  jour les
informations entreposées dans l’index clusterisé chaque fois qu’un utilisateur
modifie des données affectant la vue.
Après avoir créé l’index clusterisé unique, on peut créer plusieurs index non
clusterisés sur la vue. En utilisant le paramètre IsIndexed de la fonction ObjectProperty,
on peut déterminer si une vue est indexée. Pour la vue indexée Total_Products,
l’instruction suivante retourne un 1 (est indexée) :

SELECT ObjectProperty(object_id (‘Product_Totals’), ‘IsIndexed’)

Notez que dans la version bêta 1 l’exécution de la procédure cataloguée système
sp_help sur la vue ne rapporte pas la vue comme étant indexée, et ne montre aucun
des index. Cependant, l’exécution de la procédure cataloguée sp_helpindex sur
la vue renvoie des informations exhaustives quel que soit l’index de la vue.

Téléchargez gratuitement cette ressource

Comment cerner la maturité digitale de votre entreprise ?

Comment cerner la maturité digitale de votre entreprise ?

Conçu pour les directions IT et Métiers, ce guide vous permettra d'évaluer précisément vos processus de communication client, d'identifier vos lacunes et points d'inflexion pour établir un plan d’actions capable de soutenir durablement votre évolution. Bénéficiez maintenant d'une feuille de route complète.

Tech - Par iTPro - Publié le 24 juin 2010