Kiedy należy używać KEY
, PRIMARY KEY
, UNIQUE KEY
i INDEX
?
mysql
indexing
primary-key
unique-key
sqlperformance
WSPARCIE
źródło
źródło
Odpowiedzi:
KEY
iINDEX
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 wJOIN
,WHERE
iORDER 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.
źródło
passengers
z następującymi polami :,(id, first_name, last_name, age, passport_number)
zwykle ustawiaszid
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 konfigurowaniaid
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.
źródło
Klucz podstawowy nie dopuszcza
NULL
wartości, ale unikalny klucz dopuszczaNULL
wartości.Możemy zadeklarować tylko jeden klucz podstawowy w tabeli, ale tabela może mieć wiele unikalnych kluczy (przypisanie kolumny).
źródło
PRIMARY KEY
IUNIQUE 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.
źródło
UNIQUE KEY
może być,NULL
alePRIMARY 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.
źródło
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.
źródło
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.
źródło
Unikalny klucz :
Klucz podstawowy
źródło