Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Klauzule UNIQUE + INDEX
MySQL
post
Post #1





Grupa: Zarejestrowani
Postów: 71
Pomógł: 4
Dołączył: 3.06.2008

Ostrzeżenie: (0%)
-----


Tworzę sobie przykładową tabelę. No dajmy na to taką:

  1. CREATE TABLE test
  2. (
  3. t_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  4. t_login INT UNSIGNED NOT NULL,
  5. // reszta (czyt.: około 20) pól,
  6. INDEX (t_login),
  7. UNIQUE (t_login)
  8. )
  9. 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ć.

Ten post edytował achaja 3.05.2009, 20:36:20


--------------------
Pozdrawiam serdecznie
Krzysiek
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


UNIQUE to też indeks z tym, że dane z kolumn objętych jego działaniem muszą być unikalne.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 07:58