2010-05-12 29 views
2

Je sais qu'Oracle offre plusieurs options de refreshmode pour leurs vues matérialisées (à la demande, en validation, périodiquement). Est-ce que Microsoft SQLServer offre les mêmes fonctions pour leurs vues indexées?Mode d'actualisation à la demande pour la vue indexée (= vues matérialisées) sur SQL Server?

Sinon, comment puis-je utiliser autrement des vues indexées sur SQL Server si mon but est d'exporter des données sur une base journalière + sur demande, et si je veux éviter les problèmes de performances? Une solution de contournement existe-t-elle?

Répondre

2

Une vue matérialisée dans SQL Server est toujours à jour, avec la surcharge sur INSERT/UPDATE/DELETE qui affecte la vue.

Je ne suis pas complètement sûr de ce que vous exigez, votre question n'est pas complètement claire pour moi. Cependant, si vous ne voulez qu'une seule fois l'overhead, on a daily+ on-demand basis, je vous suggère de laisser tomber l'index quand vous n'en avez pas besoin et de le recréer quand vous le faites. L'index sera construit quand vous le créerez, et il sera alors à jour. Lorsque l'index est supprimé, il n'y aura pas de surcharge sur vos commandes INSERT/UPDATE/DELETE.

+0

Merci pour la réponse. Ce que je veux vraiment, c'est la même fonctionnalité dans SQL Server qu'Oracle. C'est l'option d'actualisation à la demande uniquement, afin d'éviter le surcoût. Mais autant que je l'ai découvert maintenant, le serveur SQL ne peut pas supporter cela. Votre suggestion semble faisable. La grande question est bien sûr le temps de construction d'une nouvelle vue indexée chaque fois que je la crée. Savez-vous si SQL Server a différentes méthodes de construction à choisir? (Je sais Oracle a 1) rempli lors de la création ou 2) rempli par l'opération de rafraîchissement suivante) Je suppose que l'instruction DROP est plutôt rapide à exécuter? – MOLAP