Si une table est définie pour avoir une contrainte unique sur une colonne, il est également nécessaire de définir un indice distinct sur cette colonne si l'on veut qu'il soit indexé pour la recherche rapide?MySql - Un index sur une colonne est-il redondant s'il est défini comme unique?
Par exemple, étant donné les indices tableau suivant:
mysql> show index from FRONTIER;
+----------+------------+-------------------------+--------------+--------------+-----------+-------------+----------+--------+------+-------------+---------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+----------+------------+-------------------------+--------------+--------------+-----------+-------------+----------+--------+------+------------+---------+
| FRONTIER | 0 | PRIMARY | 1 | ID | A | 0 | NULL | NULL | | BTREE | |
| FRONTIER | 0 | uniq_cnstr | 1 | HOST_ID | A | 0 | NULL | NULL | | BTREE | |
| FRONTIER | 0 | uniq_cnstr | 2 | HASH_PATHQRY | A | 0 | NULL | NULL | | BTREE | |
| FRONTIER | 1 | I_FRONTIER_HASH_PATHQRY | 1 | HASH_PATHQRY | A | 0 | NULL | NULL | | BTREE | |
+----------+------------+-------------------------+--------------+--------------+-----------+-------------+----------+--------+------+------------+---------+
est l'indice 'I_FRONTIER_HASH_PATHQRY' contrainte unique donnée redondante 'uniq_constr'?
(notez que la contrainte unique couvre 2 colonnes)
Même si l'index unique enjambe deux colonnes? – Joel
@Joel: si la colonne était en tête, vous n'auriez pas besoin de créer un index séparé. Mais il traîne donc vous devez toujours le faire. – Quassnoi
Merci, donc si je comprends bien, si l'ordre de deux colonnes de la contrainte unique ont été inversés alors aucun indice supplémentaire serait nécessaire sur la colonne « » leader « I_FRONTIER_HASH_PATHQRY »? – Joel