Maintenir l'incrémentation automatique et utiliser une autre colonne comme clé primaire dans MySQL
Dans MySQL, lors de la création d'une table avec une colonne à incrémentation automatique , le comportement par défaut est que cette colonne soit également la clé primaire. Cependant, ce comportement peut entraîner des problèmes de performances si les requêtes identifient principalement des lignes utilisant une colonne différente.
Considérez le scénario suivant : vous créez une table avec une colonne nommée id comme clé primaire à incrémentation automatique et une autre colonne nommée memberid qui est unique et utilisé dans les requêtes pour identifier les membres. Dans ce cas, il serait idéal d'utiliser memberid comme clé primaire pour des raisons de performances, mais cela provoquerait une erreur :
1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key
Pour résoudre ce problème, la meilleure solution est de conserver la colonne id pour maintenir la fonctionnalité d'auto-incrémentation tout en définissant l'ID membre comme clé primaire. Ceci peut être réalisé en créant un index (clé) sur la colonne id, comme indiqué ci-dessous :
CREATE TABLE members ( id int(11) UNSIGNED NOT NULL AUTO_INCREMENT, memberid VARCHAR( 30 ) NOT NULL , `time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , firstname VARCHAR( 50 ) NULL , lastname VARCHAR( 50 ) NULL , PRIMARY KEY (memberid) , KEY (id) --- or: UNIQUE KEY (id) ) ENGINE = MYISAM;
Cette approche vous permet de conserver la colonne à incrémentation automatique à des fins de performances tout en utilisant l'ID de membre comme principal. clé pour une interrogation efficace.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!