首页 > 数据库 > mysql教程 > MySQL如何在保持自增的同时使用不同的列作为主键?

MySQL如何在保持自增的同时使用不同的列作为主键?

Susan Sarandon
发布: 2024-11-03 16:02:03
原创
673 人浏览过

How Can I Use a Different Column as Primary Key While Maintaining Auto-Increment in MySQL?

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板