J'ai une question générale sur le fonctionnement de l'indexation de la base de données, en particulier dans mysql. Disons que j'ai une table avec un million de lignes avec une colonne "ClientID" qui est répartie de manière relativement égale parmi 30 valeurs. Ainsi, cette colonne est de cardinalité très basse (30) par rapport à la clé primaire (1 million).Question à propos des index mysql sur les colonnes de cardinalité basse à moyenne
Maintenant, je comprends que vous ne devriez pas créer d'index sur les champs à faible cardinalité. Toutefois, dans ce cas, les requêtes sont uniquement effectuées avec l'un des 30 clientsID. Ainsi, la création d'un index sur ClientID ne serait-elle pas utile, puisque l'espace de recherche est automatiquement réduit à 1/30ème de ce qu'il serait normalement? Ou est ma compréhension de la façon dont l'indice fonctionne imparfait?
Merci
Ainsi, l'OP devrait indexer, étant donné que 1/30 est une réduction de (très) environ 95%? – lexu
Correct. Un exemple de champ POUVANT être mauvais à indexer serait un TINYINT (1) utilisé comme un indicateur booléen. Naturellement, vos questions importent beaucoup ici et votre «pénalité» peut aller de l'espace disque gaspillé aux temps de recherche terribles - EXPLAIN est votre ami ici :) – AvatarKava
Merci pour l'explication. Lire SO et apprendre est une joie! – lexu