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

Requêtes MySQL Discussion :

Index et cardinalité


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 47
    Par défaut Index et cardinalité
    Bonjour,

    Dans quel mesure est-il intéressant de créer un index sur un champs de faible cardinalité ?

    Un exemple, imaginons que j'ai une table contenant des des livres d'un millions d'entrée avec un champ catégorie(categoryID) de cardinalité 500 (nombre de catégorie) et un champ langage (LanguageID) de cardinalité 2 (0=français, 1 = english).

    Les requêtes sont sous la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    1-->SELECT LivreID Where CategoryID=$CategoryID
    2-->SELECT LivreID Where LanguageID=$LanguageID
    Pour la requête 1, il est clair que CategoryID doit être un index de la table livre, par contre pour la requête2 est-ce vraiment nécessaire ?

    Merci

    Thibaud

  2. #2
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Par défaut
    MySQL fait ce choix pour toi: quand les champs ne sont pas suffisamment différents les uns des autres (par exemple quand 90% des champs prennent la même valeur), les index sont simplement ignorés.
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 47
    Par défaut
    Merci beaucoup

    Thibaud

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 414
    Par défaut
    sous DB2 et Oracle, il existe les index Bitmap qui sont faits justement pour indexer des colonnes à faible cardinalité.

    En effet, parfois il peut etre intéressant d'avoir des index sur ces colonnes si elles peuvent etre beaucoup accédées dans des prédicats de SL(ex :Homme, Femme).

    Ca existe sous Mysql ce type d'index bien pratique?

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

Discussions similaires

  1. N'importe quoi sur la cardinalité d'un index
    Par Ceubex dans le forum Requêtes
    Réponses: 4
    Dernier message: 24/06/2015, 08h56
  2. [index] Probleme cardinalite index
    Par tropik972 dans le forum MySQL
    Réponses: 4
    Dernier message: 04/10/2010, 09h06
  3. index et cardinalité
    Par plof93 dans le forum Débuter
    Réponses: 7
    Dernier message: 13/07/2009, 17h17
  4. [Technique] Intérêt des index
    Par ddams dans le forum Décisions SGBD
    Réponses: 10
    Dernier message: 04/11/2002, 15h11
  5. Requête imbriquée et indexes INTERBASE
    Par vadim dans le forum InterBase
    Réponses: 2
    Dernier message: 06/09/2002, 16h15

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