MySQL 中维护自增列并使用另一列作为主键
MySQL 中,创建带有自增列的表时,默认行为是该列也是主键。但是,如果查询主要使用不同的列来识别行,则此行为可能会导致性能问题。
考虑以下场景:您创建一个表,其中名为 id 的列作为自动递增主键,另一个名为 id 的列作为自动递增主键。 memberid 是唯一的,用于在查询中识别成员。在这种情况下,出于性能原因,最好使用memberid作为主键,但这样做会导致错误:
1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key
要解决这个问题,最好的解决方案是保留 id 列保持自动递增功能,同时定义memberid为主键。这可以通过在 id 列上创建索引(键)来实现,如下所示:
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;
这种方法允许您出于性能目的保留自动递增列,同时仍使用 memberid 作为主列高效查询的关键。
以上是MySQL如何在保持自增的同时使用不同的列作为主键?的详细内容。更多信息请关注PHP中文网其他相关文章!