Christian Kruse: UNIQUE mit PRIMARY (D00fe Hausaufgaben!!)

Beitrag lesen

你好 Ilja,

UNIQUE und UNIQUE INDEX sind dasselbe, das INDEX dabei ist optional.

wäre dies der fall, würde auch immer dasselbe passieren. meiner meinung
gibt es aber unterschiede. ein unique contraint benutzt nur einen index,
um diesen constraint schneller ausführen zu können. demzufoge legt es
gleichzeitig einen index an, falls keiner vorhanden ist. ist aber
bereits in ein index auf dieser spalte (spalten) vorhanden, wird kein
weiterer index angelegt, sondern der schon vorhandene benutzt.

Wo hast du diese Information her? Im MySQL-Handbuch steht das nicht. Und
um es mal so zu sagen: deine Aussage ist nicht haltbar, aus mehreren
Gruenden.

  1. Habe ich davon nichts im Handbuch gefunden
  2. Habe ich nichts gefunden, was im Sourcecode darauf hinweist, im
       Gegenteil, wenn ich das richtig verstanden habe, ist das INDEX einfach
       nur optional.
  3. Habe ich es ausprobiert: lege eine Tabelle so an:
  
create table test (  
  id int(10) not null primary key auto_increment,  
  foo varchar(120),  
  UNIQUE INDEX (foo)  
);  

Wenn ich jetzt mysqldump darueberlaufen lasse, kommt das bei raus:

  
CREATE TABLE test (  
  id int(10) NOT NULL auto_increment,  
  foo varchar(120) default NULL,  
  PRIMARY KEY  (id),  
  UNIQUE KEY foo (foo)  
) TYPE=MyISAM;  

Tabelle droppen und neu anlegen, diesmal so:

  
create table test (  
  id int(10) not null primary key auto_increment,  
  foo varchar(120),  
  UNIQUE (foo)  
);  

Jetzt wieder mysqldump drueberlaufen lassen, dann kommt das dabei raus:

  
CREATE TABLE test (  
  id int(10) NOT NULL auto_increment,  
  foo varchar(120) default NULL,  
  PRIMARY KEY  (id),  
  UNIQUE KEY foo (foo)  
) TYPE=MyISAM;  

Man beachte das UNIQUE KEY foo (foo)!

Alles in allem (Handbuch, Code, Tests): deine Aussage ist Quatsch, das
INDEX ist einfach nur optional.

再见,
克里斯蒂安

--
Keine Schneeflocke faellt je auf die falsche Stelle.