Bonsoir,
Voilà, j'ai un problème tout bête.
J'ai une table avec deux champ SMALLINT : id et id_perso.
À chaque id sera associé plusieurs id_perso et vice versa. Donc ni id, ni id_perso de sera unique.
Par contre je veux qu'un couple (id, id_perso) soit unique. J'ai donc déclaré le couple (id, id_perso) comme clé unique.
Ensuite, comme je vais principalement questionner cette table à partir de id, je me suis dit que ça serait une bonne idée de mettre id comme index. Et là patatras ! J'ai le warning suivant dans phpMyAdmin :
D'ailleurs l'index sur id a "aucune" cardinalité, donc le warning semble être justifié.
Je ne comprends pas car a priori, le fait de déclarer un couple en clé unique ne crée pas un index, non ? Donc pourquoi je n'ai pas le droit de créer un index avec id ?
Étant donné que l'unicité du couple est primordiale, est-ce que la seule façon d'avoir un index sur id est de faire un index sur le couple (id, id_perso) et donc de déclarer (id, id_perso) comme clé primaire ? Je veux bien, mais je trouverais ça dommage de devoir créer un index sur deux champs alors que je n'en ai besoin que sur un seul.
Voilà, j'ai un problème tout bête.
J'ai une table avec deux champ SMALLINT : id et id_perso.
À chaque id sera associé plusieurs id_perso et vice versa. Donc ni id, ni id_perso de sera unique.
Par contre je veux qu'un couple (id, id_perso) soit unique. J'ai donc déclaré le couple (id, id_perso) comme clé unique.
Ensuite, comme je vais principalement questionner cette table à partir de id, je me suis dit que ça serait une bonne idée de mettre id comme index. Et là patatras ! J'ai le warning suivant dans phpMyAdmin :
Code:
La colonne `id` ne devrait pas faire partie à la fois d'une clé unique et d'une clé index
D'ailleurs l'index sur id a "aucune" cardinalité, donc le warning semble être justifié.
Je ne comprends pas car a priori, le fait de déclarer un couple en clé unique ne crée pas un index, non ? Donc pourquoi je n'ai pas le droit de créer un index avec id ?
Étant donné que l'unicité du couple est primordiale, est-ce que la seule façon d'avoir un index sur id est de faire un index sur le couple (id, id_perso) et donc de déclarer (id, id_perso) comme clé primaire ? Je veux bien, mais je trouverais ça dommage de devoir créer un index sur deux champs alors que je n'en ai besoin que sur un seul.