Avatar billede qvistgaard Nybegynder
22. oktober 2008 - 15:35 Der er 3 kommentarer og
1 løsning

Unique vs. Index

Hej alle

Jeg søger lige noget viden omkring MySQL ...

Jeg har en tabel, connecttable, med som binder to andre tabeller sammen... table1 og table2...

connecttable har 3 felter
id --> primary
table1_id --> int(32) (FK til table1.id)
table2_id --> int(32) (FK til table2.id)

Når vi så har det på plads vil jeg have konbinationen af connecttable.table1_id og connecttable.table2_id er Unique... men for at kunne lave de to felter til FK skal de jo være index's... men giver det mening at have både en Unique og 2 indexes?

Kan en Unique virke som Indexes for de to? skal man have to indexes eller hvordan virker det?

Håber nogle kan hjælpe

Qvistgaard
Avatar billede pidgeot Nybegynder
22. oktober 2008 - 15:37 #1
Hvorfor bruger du en ekstra surrogatnøgle, i stedet for bare at gøre sådan:
table1_id --> int(32) (PK,FK til table1.id)
table2_id --> int(32) (PK,FK til table2.id)

Så har du et implicit unique index der hedder table1_id, table2_id - hvis du har brug for at søge ud fra table2_id, så lav et indeks på den kolonne ved siden af.
Avatar billede qvistgaard Nybegynder
22. oktober 2008 - 16:04 #2
Havde lige en hjerneblødning... det er rettet nu...

Måske du kan svare mig på endnu et spørgsmål...

Når jeg så sætter mine FK laver den automatisk et INDEX på table2_id... Hvorfor?
Avatar billede pidgeot Nybegynder
22. oktober 2008 - 16:08 #3
Ud fra det du siger gætter jeg på at du bruger InnoDB - og den kræver nemlig at der er et brugbart index til den fremmednøgle den laver. Er der ikke det, laver den selv et.

Fra http://dev.mysql.com/doc/refman/5.0/en/innodb-foreign-key-constraints.html:
"In the referencing table, there must be an index where the foreign key columns are listed as the first columns in the same order. Such an index is created on the referencing table automatically if it does not exist. index_name, if given, is used as described previously. "
Avatar billede dkfire Nybegynder
22. oktober 2008 - 20:59 #4
Efter som det er et felt som du vil lave meget søgning på, så giver det da bestemt også mening at have et index på det felt.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester