CREATE TABLE test ( t_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, t_login INT UNSIGNED NOT NULL, // reszta (czyt.: około 20) pól, INDEX (t_login), UNIQUE (t_login) ) ENGINE = innodb;
I wszystko jest "prawie" dobrze. Tabela się stworzyła ale... mam ostrzeżenie, że INDEX i UNIQUE nie mogą dotyczyć tego samego pola. Jednakże ja wiem, że pole t_login ma być zarówno indeksem jak i będzie unikatowe (np tabela użytkowników forum gdzie t_login jest unikatowym loginem każdego użytkownika).
Z tego co przeczytałem:
INDEX
Cytat
Indeksy pozwalają na szybsze przeszukiwanie bazy danych, ale za to więcej czasu zajmuje operacja aktualizacji (UPDATE) dla tabeli ze zdefiniowanym indeksem.
UNIQUE
Cytat
Za pomocą UNIQUE można ustalić, które kolumny mają być unikalne. To znaczy, że wszystkie wartości w kolumnie dla której ustalono UNIQUE muszą być niepowtarzalne w każdym wierszu tabeli.
Pierwsze (i na razie jedyne) co mi się nasuwa na myśl jest to, że z nałożenia klauzuli UNIQUE na jakieś pole wynika, że to pole będzie też polem indeksowania rekordów. Jednakże nie działa to w drugą stronę, że z nałożenia INDEXu wynika, że dane pole będzie musiało być unikatowe co zresztą sprawdziłem.
A jak jest naprawdę z tymi klauzulami INDEX i UNIQUE? Czy dobrze myślę czy też źle? Ten angielski maual MySQL'a nie za bardzo potrafię zrozumieć.