Kiedy należy używać KEY
, PRIMARY KEY
, UNIQUE KEY
i INDEX
?
Kiedy należy używać KEY
, PRIMARY KEY
, UNIQUE KEY
i INDEX
?
Odpowiedzi:
KEY
i INDEX
są synonimami w MySQL. Oni oznaczają to samo. W bazach danych można użyć indeksów, aby poprawić szybkość pobierania danych. Indeks jest zazwyczaj tworzone na kolumnach używanych w JOIN
, WHERE
i ORDER BY
klauzul.
Wyobraź sobie, że masz tabelę o nazwie users
i chcesz wyszukać wszystkich użytkowników o nazwisku „Smith”. Bez indeksu baza danych musiałaby przejść przez wszystkie rekordy tabeli: jest to powolne, ponieważ im więcej rekordów masz w bazie danych, tym więcej pracy trzeba zrobić, aby znaleźć wynik. Z drugiej strony indeks pomoże szybko przejść do bazy danych na odpowiednie strony, na których przechowywane są rekordy „Smith”. Jest to bardzo podobne do tego, w jaki sposób my, ludzie, przeglądamy książkę telefoniczną, aby znaleźć kogoś według nazwiska: Nie zaczynamy przeszukiwać katalogu od okładki do okładki, o ile wstawiamy informacje w kolejności, w jakiej możemy użyj, aby szybko przejść do stron „S”.
Klucze podstawowe i klucze unikatowe są podobne. Klucz podstawowy to kolumna lub kombinacja kolumn, które mogą jednoznacznie identyfikować wiersz. Jest to specjalny przypadek wyjątkowego klucza . Tabela może mieć co najwyżej jeden klucz podstawowy, ale więcej niż jeden unikalny klucz. Po określeniu unikalnego klucza w kolumnie żadne dwa odrębne wiersze w tabeli nie mogą mieć tej samej wartości.
Zauważ też, że kolumny zdefiniowane jako klucze podstawowe lub klucze unikalne są automatycznie indeksowane w MySQL.
passengers
z następującymi polami :, (id, first_name, last_name, age, passport_number)
zwykle ustawiasz id
kolumnę jako klucz podstawowy. Klucz podstawowy jest automatycznie unikalnym kluczem. Główną różnicą jest to, że możesz mieć tylko jeden klucz podstawowy w tabeli i że kolumna nie może zawierać NULL
wartości. Nie ma potrzeby konfigurowania id
kolumny, UNIQUE
ponieważ ustawienie jej na klucz podstawowy automatycznie gwarantuje, że będzie ona unikalna ... Następnie możesz ustawić passport_number
ją UNIQUE
tak, aby nie więcej niż jeden pasażer ...
NULL
bez problemu wstawić tę kolumnę.
KEY i INDEX są synonimami.
Należy dodać indeks, gdy pomiary wydajności i EXPLAIN pokazują, że zapytanie jest nieefektywne z powodu brakującego indeksu. Dodanie indeksu może poprawić wydajność zapytań (ale może spowolnić modyfikacje tabeli).
Powinieneś użyć UNIQUE, jeśli chcesz ograniczyć wartości w tej kolumnie (lub kolumnach), aby były unikalne, aby próby wstawienia zduplikowanych wartości spowodowały błąd.
KLUCZ PODSTAWOWY jest zarówno unikalnym ograniczeniem, jak i sugeruje również, że kolumna NIE JEST NULL. Służy do nadania tożsamości każdemu wierszowi. Może to być przydatne do łączenia z inną tabelą poprzez ograniczenie klucza obcego. Chociaż stół nie musi mieć KLUCZA PODSTAWOWEGO, zwykle jest dobrym pomysłem.
Klucz podstawowy nie dopuszcza NULL
wartości, ale unikalny klucz dopuszcza NULL
wartości.
Możemy zadeklarować tylko jeden klucz podstawowy w tabeli, ale tabela może mieć wiele unikalnych kluczy (przypisanie kolumny).
PRIMARY KEY
I UNIQUE KEY
są podobne, z tym wyjątkiem, że ma różne funkcje. Klucz główny sprawia, że wiersz tabeli jest unikalny (tzn. Nie może być 2 wiersza z dokładnie tym samym kluczem). Możesz mieć tylko 1 klucz podstawowy w tabeli bazy danych.
Unikalny klucz powoduje, że kolumna tabeli w wierszu tabeli jest unikalna (tzn. Żaden 2 wiersz tabeli nie może mieć tej samej dokładnej wartości). Możesz mieć więcej niż 1 unikalną kolumnę tabeli kluczy (w przeciwieństwie do klucza podstawowego, co oznacza, że tylko 1 kolumna tabeli w tabeli jest unikalna).
INDEX
tworzy również wyjątkowość. MySQL (przykład) utworzy tabelę indeksowania dla indeksowanej kolumny. W ten sposób łatwiej jest pobrać wartość wiersza tabeli, gdy zapytanie jest wyszukiwane w tej indeksowanej kolumnie tabeli. Wadą jest to, że jeśli wykonujesz wiele aktualizacji / usuwania / tworzenia, MySQL musi zarządzać tabelami indeksowania (i może to być wąskim gardłem wydajności).
Mam nadzieję że to pomoże.
UNIQUE KEY
może być, NULL
ale PRIMARY KEY
nie może być NULL
.
Unikalne klucze: kolumny, w których nie ma dwóch podobnych wierszy
Klucz podstawowy: Zbiór minimalnej liczby kolumn, który może jednoznacznie zidentyfikować każdy wiersz w tabeli (tzn. Żadne dwa wiersze nie są podobne we wszystkich kolumnach stanowiących klucz podstawowy). W tabeli może znajdować się więcej niż jeden klucz podstawowy. Jeśli istnieje klucz unikalny, to jest to klucz podstawowy (nie „klucz podstawowy”) w tabeli. Jeśli nie istnieje unikalny klucz, wówczas do zidentyfikowania wiersza wymagana będzie więcej niż jedna wartość kolumny, np. Imię (nazwisko, nazwisko, nazwa ojca, nazwa matki) może w niektórych tabelach stanowić klucz podstawowy.
Indeks: służy do optymalizacji zapytań. Jeśli zamierzasz wielokrotnie przeszukiwać lub sortować wyniki na podstawie jakiejś kolumny (np. Przeważnie ludzie będą wyszukiwać uczniów według nazwiska, a nie według numeru rzutu), można to zoptymalizować, jeśli wszystkie wartości kolumn to „ indeksowane ”na przykład za pomocą algorytmu drzewa binarnego.
Klucz podstawowy - możemy umieścić tylko jeden klucz podstawowy na stole w tabeli i nie możemy pozostawić tej kolumny pustej, gdy wprowadzamy wartości do tabeli.
Unikalny klucz - możemy umieścić więcej niż jeden unikalny klucz w tabeli i możemy pozostawić tę kolumnę pustą, gdy wprowadzamy wartości do tabeli. kolumna przyjmuje unikalne wartości (nie takie same) po zastosowaniu klucza podstawowego i unikalnego.
Klucz podstawowy służy do pracy z różnymi tabelami. Jest to podstawa relacyjnych baz danych. Jeśli masz bazę danych książek, lepiej utworzyć 2 tabele - 1) książki i 2) autorów z INT kluczem podstawowym „id”. Następnie używasz identyfikatora w książkach zamiast nazwiska autorów.
Unikalny klucz jest używany, jeśli nie chcesz powtarzać wpisów. Na przykład możesz mieć tytuł w swojej książce i chcesz mieć pewność, że dla każdego tytułu jest tylko jeden wpis.
Unikalny klucz :
Klucz podstawowy