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

Langage SQL Discussion :

Index composé : un ou deux?


Sujet :

Langage SQL

  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 2
    Par défaut Index composé : un ou deux?
    Bonjour,

    Je vais devoir faire de très nombreuses requêtes sur une table catalogue, avec dés tris différents, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     select ID_ARTICLE, ... from ARTICLES
      WHERE ID_GENRE = 'Sélection utilisateur'
      ORDER BY PRIX
    puis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     select ID_ARTICLE, ... from ARTICLES
      WHERE ID_GENRE = 'Sélection utilisateur"
      ORDER BY COULEUR
    Ma question est :
    puis-je créer un index composé de type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Create Index ART1 on ARTICLES (ID_GENRE,PRIX,COULEUR)
    sachant que dans le premier cas je m'appuie sur les deux premières colonnes, alors que dans le second cas je m'appuie sur la colonne 1 et 3?

    Ou dois-je créer deux index
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Create Index ART1 on ARTICLES (ID_GENRE,PRIX)
    et
    Create Index ART1 on ARTICLES (ID_GENRE,COULEUR)
    ?

    Merci d'avance pour vos réponses.
    T.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 136
    Par défaut
    Deux index seront nécessaires pour prendre en charge les deux requêtes de manière optimale
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    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 !

    Imagine que tu cherches dans l'annuaire la liste des gens dont le prénom est 'Robert' à Paris.

    L'annuaire ressemble en quelques sortes un index de la table des numéros de téléphone sur les champs (Ville, Nom, Prénom).

    Ben cet index ne t'apportera rien de plus que l'index (Ville) tout court !
    De manière générale, dès qu'il y a un "trou" dans tes colonnes de recherche par rapport à l'index, les colonnes de l'indexe après le trou ne te sont d'aucune utilitée...

  4. #4
    Membre chevronné Avatar de chrifo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 444
    Par défaut
    Bonjour,

    Pour compléter vos réponses, j'ajoute un petit bémol sur SGBD Oracle avec l'introduction de l'index skip scan en 9i, qui rend plus souple l'utilisation des index composés.

  5. #5
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 2
    Par défaut Précision
    Petite précision : la raison de ma question est que, si cela fonctionne, alors je réduis tout de même le temps de mise à jour des index, n'en ayant plus qu'un. Dans ce cas, cela vaut sans doute la peine d'avoir une colonne qui ne sert à rien, une fois sur deux. N'est-ce pas?

  6. #6
    Membre chevronné Avatar de chrifo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 444
    Par défaut
    Citation Envoyé par tathos Voir le message
    Petite précision : la raison de ma question est que, si cela fonctionne, alors je réduis tout de même le temps de mise à jour des index, n'en ayant plus qu'un. Dans ce cas, cela vaut sans doute la peine d'avoir une colonne qui ne sert à rien, une fois sur deux. N'est-ce pas?
    Pourquoi pas (toujours sous oracle >=9i).
    Tout est une question d'équilibre et de choix.
    Dans la plupart des cas on privilégiera quand même la création d'index au risque de dégrader les perfs des mises à jour, moins fréquentes que les sélections ... cela dépend vraiment de l'utilisation qui est faite de votre base.

Discussions similaires

  1. [2008R2] Création Index composé
    Par americ dans le forum Développement
    Réponses: 10
    Dernier message: 08/06/2015, 08h33
  2. unicité (ou index) entre colonnes de deux tables
    Par medhan dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 17/12/2013, 10h10
  3. drag & drop (problème index du drop) entre deux datagrid
    Par ermips dans le forum Windows Forms
    Réponses: 7
    Dernier message: 18/04/2012, 16h25
  4. Index composé de plusieurs colonnes
    Par Yannick GIRAUD dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 15/08/2006, 19h15
  5. Map:Clé composé de deux String
    Par progamer54 dans le forum Collection et Stream
    Réponses: 12
    Dernier message: 23/05/2006, 17h59

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