Bonjour,
J'ai créé une vue WITH SHEMABINDING.
J'aimerais simplement créer un index nonUnique dessus... est-ce possible?
Avec :
Code : Sélectionner tout - Visualiser dans une fenêtre à part CREATE INDEX idx_1 ON maVue(monChamp)
Bonjour,
J'ai créé une vue WITH SHEMABINDING.
J'aimerais simplement créer un index nonUnique dessus... est-ce possible?
Avec :
Code : Sélectionner tout - Visualiser dans une fenêtre à part CREATE INDEX idx_1 ON maVue(monChamp)
Salut,
dans la mesure ou une vue est juste une requête de sélection stockée sous forme d'objet, je pense qu'il est impossible d'y ajouter un index.
Contrairement à ce qui vous a été dit, les vues indexées existent bien sous MSQ SQL Server depuis la version 2000.
Sous Oracle cela s'appelle "vue matérialisées" et c'est le même principe : rajouter un index contenant des données résultant du calcul de la requête qui construit la vue, afin d'accélérer les accès aux données.
Toutes les vue ne sont pas indexables. pouvez vous poster :
1) l'ordre complet CREATE VIEW
2) les ordres DDL de création des tables
3) le texte exact de l'erreur et son n°
Ce afin de vous aider à voir pourquoi SQL vous refuse l'indexation de la vue.
Sachez cepandant que vous devez en premier lieu créer un premier index de type UNIQUE CLUSTERED avant de créer d'autres index spécifiques.
A +
Avant tout merci SQL PRO. Je n'en attendais pas moins de toi
Ton poste m'a donné plusieurs informations que je soupçonnais, mais qui demandais confirmation. reprenons cela point par point :
Je savais déjà tout ça mais merci de le rappeler, y compris pour pacmann
Voilà une information que je soupçonnais...
Cependant, lorsque je crée un index unique clustered sur un champ cela bloque de la même façon mes tables inclues dans la requête de création de la vue.
Comme si n'importe quel index unique clustered bloquait les tables concernées...
L'erreur au moment de l'insert (une fois la vue ET l'index clustered unique créé) est de type : "violation de PRIMARY KEY" pourtant je suis sûr que ce n'est pas le cas puisque le champ que j'index sert de clé (en l'occurence, un id_ligne de facturation) dans la table et la vue.
Il y a un autre paramètre qui peut avoir une influence : l'insertion est située dans une transaction qui insert dans plusieurs tables... serait-ce du à la transaction? (même s'il n'ya pas de with nolock dans ma requête de création de la vue... donc aucune chance de prendre des données "fantômes")
Bref, beaucoup de questions sans réponses...
sans le DDL de tes tables difficile de dire quoi que ce soit...
A +
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager