該場景涉及MySQL表,其中id列作為自增字段,用於可視化方便,而memberid列充當實際的唯一鍵。但是,嘗試使用 PRIMARY KEY (memberid) 定義表會導致錯誤 (1075),指出只能有一個自動列且它必須是一個鍵。
要解決此問題,可以有一個不是主鍵的自動遞增列,前提是在其上定義了索引(鍵)。這是修改後的表定義:
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;
透過在id列上新增KEY或UNIQUE KEY索引,在memberid列成為主鍵的同時保持自增功能,從而可以根據memberid值進行高效查詢。
最佳選擇取決於效能和磁碟空間的相對重要性。如果效能至關重要,則維護自動遞增 id 欄位並在 memberid 上使用索引可提供平衡:
但是,如果磁碟空間是一個重要問題,請考慮完全刪除 id 列並依賴 memberid 列作為主鍵和自動- 遞增欄位。這種方法犧牲了一些性能來提高空間利用率。最終,性能和空間之間的選擇取決於應用的特定要求。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3