Bonsoir à tous,
Je me suis mis au moteur InnoDB de MySQL pour pouvoir gérer les clés étrangères. Je modélise avec Workbench.

Lorsque je crée une clé étrangère dans une table, il créé un index lié à cette clé qu'on ne peut pas enlever.
D'après le site officiel pourtant http://dev.mysql.com/doc/refman/5.6/...eign-keys.html
index_name represents a foreign key ID. The index_name value is ignored if there is already an explicitly defined index on the child table that can support the foreign key
Ce que je comprends comme "s'il y a déjà un index équivalent, il le réutilise au lieu de faire un deuxième index.

Je me retrouve avec des tas d'index, par exemple dans cette table qui lie 2 fois la même colonne de la table "staff" une fois pour la création, une fois pour la modification :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
CREATE TABLE IF NOT EXISTS `datab`.`tabone` (
  `taboneId` INT(6) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '',
  `name` VARCHAR(150) NOT NULL COMMENT '',
  `staffCreatId` INT(6) UNSIGNED NOT NULL COMMENT '',
  `dateCreation` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '',
  `staffModifId` INT(6) UNSIGNED NOT NULL COMMENT '',
  `dateModification` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '',
  PRIMARY KEY (`taboneId`)  COMMENT '',
  INDEX `fk_tabone_staff1_idx` (`staffCreatId` ASC)  COMMENT '',
  INDEX `fk_tabone_staff2_idx` (`staffModifId` ASC)  COMMENT '',
  CONSTRAINT `fk_tabone_staff1`
    FOREIGN KEY (`staffCreatId`)
    REFERENCES `datab`.`staff` (`staffId`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_tabone_staff2`
    FOREIGN KEY (`staffModifId`)
    REFERENCES `datab`.`staff` (`staffId`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB
Les 2 référencent la même colonne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
REFERENCES `datab`.`staff` (`staffId`)
.
Je comprends que le contenu des 2 colonnes est différent (pas les mêmes staff en création et en modification) mais les indexations sont un peu redondantes à mon goût.
En plus, j'ai ce schéma dans un bon nombre de tables, imaginez donc l'identifiant des utilisateurs indéxé 2 fois dans toutes les tables !

Dans Workbench, si je veux supprimer l'index il m'en empêche et dit :
The index fk_tabone_staff2_idx belongs to the Foreign Key fk_tabone_staff2. You must delete the Foreign Key to delete this index
Donc, la question est : puis-je éviter ces indexations massives ?
Et question subsidiaire si c'est le cas : puis-je le faire dans Workbench ou faut-il le faire à la main dans le SQL de création de base généré ensuite ?

Merci tout plein !