Wiem, jak używać INDEX, jak w poniższym kodzie. I wiem, jak używać klucza obcego i klucza podstawowego .
CREATE TABLE tasks (
task_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
parent_id INT UNSIGNED NOT NULL DEFAULT 0,
task VARCHAR(100) NOT NULL,
date_added TIMESTAMP NOT NULL,
date_completed TIMESTAMP,
PRIMARY KEY (task_id),
INDEX parent (parent_id),
....
Jednak znalazłem kod używający KEY zamiast INDEX, jak poniżej.
...
KEY order_date (order_date)
...
Nie mogłem znaleźć żadnego wyjaśnienia na oficjalnej stronie MySQL. Czy ktoś mógłby mi powiedzieć, jakie są różnice między KEY a INDEX?
Jedyną różnicą, którą widzę, jest to, że kiedy używam KEY ...
, muszę powtórzyć słowo, np
KEY order_date (order_date)
.
KEY keyname (column_name)
kiedy utworzyłem tabelęINDEX keyname (column_name)
. Fakt, że jest to synonim, doskonale to tłumaczy.Oto ładny opis „różnicy”:
źródło
Jest wymieniony jako synonim
INDEX
w dokumentacji „create table”: MySQL 5.5 Reference Manual :: 13 Składnia instrukcji SQL :: 13.1 Instrukcje definicji danych :: 13.1.17 Składnia CREATE TABLENikt już nie zacytował tej sekcji i nie połączył pomocy dla 5.1.
Podobnie jak
PRIMARY KEY
tworzy klucz podstawowy i indeks dla Ciebie,KEY
tworzy tylko indeks.źródło
Klucze to specjalne pola, które pełnią bardzo określone role w tabeli, a rodzaj klucza określa jego przeznaczenie w tabeli.
Indeks to struktura zapewniana przez RDBMS (system zarządzania bazą danych) w celu usprawnienia przetwarzania danych. Indeks nie ma nic wspólnego z logiczną strukturą bazy danych.
WIĘC...
Klucze to struktury logiczne używane do identyfikacji rekordów w tabeli, a indeksy to struktury fizyczne używane do optymalizacji przetwarzania danych.
Źródło: Projekt bazy danych dla zwykłych śmiertelników
Autor: Michael Hernandez
źródło
Klucz to zestaw kolumn lub wyrażeń, na których budujemy indeks.
Podczas gdy indeks jest strukturą przechowywaną w bazie danych, klucze są ściśle logiczną koncepcją.
Indeks pomaga nam w szybkim dostępie do rekordu, podczas gdy klawisze tylko jednoznacznie identyfikują rekordy.
Każda tabela musi mieć klucz, ale indeks nie jest obowiązkowy.
Sprawdź na https://docs.oracle.com/cd/E11882_01/server.112/e40540/indexiot.htm#CNCPT721
źródło