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 :

Récupérer la liste des indexes d'une base


Sujet :

MS SQL Server

  1. #1
    Membre averti
    Homme Profil pro
    Développeur VB6 et tout neuf en .Net
    Inscrit en
    Avril 2005
    Messages
    377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VB6 et tout neuf en .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 377
    Points : 446
    Points
    446
    Par défaut Récupérer la liste des indexes d'une base
    Bonjour à tous,

    Je cherche à récupérer par une requête la liste des indexes dans ma base de données.
    Pour chaque index j'ai besoin de connaitre :
    - son nom,
    - La table et les colonnes concernées,
    - savoir s'il est UNIQUE

    J'ai trouvé beaucoup de choses grace aux vues INFORMATION_SCHEMA mais pas ça.

    Quelqu'un a-t-il une idée ?

    Merci d'avance.
    Le plus difficile pour trouver une bonne réponse, c'est déjà de trouver la bonne question.

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonsoir,

    Regardez dans la vue système sys.indexes et sa documentation (ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.fr/tsqlref9/html/066bd9ac-6554-4297-88fe-d740de1f94a8.htm), vous y trouverez tout ce que vous cherchez

  3. #3
    Membre averti
    Homme Profil pro
    Développeur VB6 et tout neuf en .Net
    Inscrit en
    Avril 2005
    Messages
    377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VB6 et tout neuf en .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 377
    Points : 446
    Points
    446
    Par défaut
    Merci !
    J'y vais de suite.
    Le plus difficile pour trouver une bonne réponse, c'est déjà de trouver la bonne question.

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 756
    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 756
    Points : 52 534
    Points
    52 534
    Billets dans le blog
    5
    Par défaut
    les index n'existe pas en SQL (norme) car ce sont des objets physiques. C'est pourquoi vous ne trouverez rien dans les vues d'information de schema au sujet des index, ni d'ailleurs des fichiers.

    Pour cela vous devez utiliser les vues systèmes comme :
    1) sys.indexes pour la "liste" des index
    2) sys.indexkeys pour les composantes (colonnes) des index.

    Pour plus d'infor voyez le papier de Rudi Bruchez sur les statistiques (sous jacentes aux index) : http://rudi.developpez.com/sqlserver.../statistiques/

    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/ * * * * *

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 240
    Points : 210
    Points
    210
    Par défaut
    Merci pour ce lien très intéressant ainsi qu'à Rudi Bouchez pour la rédaction du document.

  6. #6
    Membre averti
    Homme Profil pro
    Développeur VB6 et tout neuf en .Net
    Inscrit en
    Avril 2005
    Messages
    377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VB6 et tout neuf en .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 377
    Points : 446
    Points
    446
    Par défaut
    Bonjour a tous,

    Voici la requête que j'utilise pour trouver les indexes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Select Tab.name TABLE_NAME, _
              Idx.name INDEX_NAME, 
              Col.name COLUMN_NAME, _
              'PRIMARY_KEY' = case Idx.is_primary_key When '0' Then '0' Else '-1' End, 
              'UNIQUE'      = case Idx.is_unique      When '0' Then '0' Else '-1' End
    From sys.tables                Tab
          Inner join sys.indexes  Idx    On Tab.object_id    = Idx.object_id 
          Inner join sys.index_columns IdxCol On IdxCol.object_id = Idx.object_id And IdxCol.index_id  = Idx.index_id 
         Inner join sys.columns       Col    On Col.object_id    = IdxCol.object_id And Col.column_id    = IdxCol.column_id 
    Where Tab.type_desc = 'USER_TABLE' 
    Order by TABLE_NAME, INDEX_NAME,COLUMN_NAME
    Le plus difficile pour trouver une bonne réponse, c'est déjà de trouver la bonne question.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/11/2008, 11h11
  2. Listes des indexes d'une base de de données
    Par The eye dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 11/01/2008, 11h55
  3. Connaitre la liste des vues d'une base.
    Par jbat dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 04/05/2005, 09h04
  4. Extraire liste des tables d'une base !!!!
    Par Bjuice2 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 15/03/2005, 15h44
  5. Liste des tables d'une bases de données spécifique
    Par faridos23 dans le forum Requêtes
    Réponses: 3
    Dernier message: 26/08/2003, 22h20

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