IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

Problèmes de vue indéxée


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    480
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 480
    Par défaut Problèmes de vue indéxée
    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)

  2. #2
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    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.

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 998
    Billets dans le blog
    6
    Par défaut
    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 +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    480
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 480
    Par défaut
    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 :

    Citation Envoyé par SQLpro Voir le message
    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.
    Je savais déjà tout ça mais merci de le rappeler, y compris pour pacmann

    Citation Envoyé par SQLpro Voir le message
    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.
    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...

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 998
    Billets dans le blog
    6
    Par défaut
    sans le DDL de tes tables difficile de dire quoi que ce soit...

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    480
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 480
    Par défaut
    Citation Envoyé par pacmann Voir le message
    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.
    Complètement faux...

    Bien sûr que cela est possible!

Discussions similaires

  1. Problème de vue
    Par tiyolx dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 27/11/2008, 09h44
  2. Envoie de Mail # Problème de vue
    Par captainflex dans le forum Ruby on Rails
    Réponses: 1
    Dernier message: 07/09/2008, 13h11
  3. Computed column ou vue indéxée
    Par PickEpique dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 09/11/2007, 11h31
  4. Problème de vue Datasheet sous sharepoint
    Par FiCuS dans le forum SharePoint
    Réponses: 1
    Dernier message: 23/10/2007, 11h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo