Heim  >  Artikel  >  Datenbank  >  Wie kann ich eine andere Spalte als Primärschlüssel verwenden und gleichzeitig die automatische Inkrementierung in MySQL beibehalten?

Wie kann ich eine andere Spalte als Primärschlüssel verwenden und gleichzeitig die automatische Inkrementierung in MySQL beibehalten?

Susan Sarandon
Susan SarandonOriginal
2024-11-03 16:02:03656Durchsuche

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

Aufrechterhaltung der automatischen Inkrementierung und Verwendung einer anderen Spalte als Primärschlüssel in MySQL

In MySQL beim Erstellen einer Tabelle mit einer automatisch inkrementierenden Spalte , ist das Standardverhalten, dass diese Spalte auch der Primärschlüssel ist. Dieses Verhalten kann jedoch zu Leistungsproblemen führen, wenn Abfragen hauptsächlich Zeilen identifizieren, die eine andere Spalte verwenden.

Stellen Sie sich das folgende Szenario vor: Sie erstellen eine Tabelle mit einer Spalte namens „id“ als automatisch inkrementierendem Primärschlüssel und einer weiteren Spalte mit dem Namen „ Mitglieds-ID, die eindeutig ist und in Abfragen zur Identifizierung von Mitgliedern verwendet wird. In diesem Fall wäre es aus Leistungsgründen ideal, die Member-ID als Primärschlüssel zu verwenden, dies würde jedoch einen Fehler verursachen:

1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key

Um dieses Problem zu beheben, besteht die beste Lösung darin, die ID-Spalte für beizubehalten Beibehaltung der automatischen Inkrementierungsfunktion bei gleichzeitiger Definition der Member-ID als Primärschlüssel. Dies kann erreicht werden, indem ein Index (Schlüssel) für die ID-Spalte erstellt wird, wie unten gezeigt:

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; 

Dieser Ansatz ermöglicht es Ihnen, die automatisch inkrementierende Spalte aus Leistungsgründen beizubehalten und gleichzeitig die Member-ID weiterhin als primäre Spalte zu verwenden Schlüssel für effiziente Abfragen.

Das obige ist der detaillierte Inhalt vonWie kann ich eine andere Spalte als Primärschlüssel verwenden und gleichzeitig die automatische Inkrementierung in MySQL beibehalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn