首頁  >  文章  >  資料庫  >  MySQL如何在保持自增的同時使用不同的列作為主鍵?

MySQL如何在保持自增的同時使用不同的列作為主鍵?

Susan Sarandon
Susan Sarandon原創
2024-11-03 16:02:03656瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn