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