Kiedy należy używać KEY, PRIMARY KEY, UNIQUE KEYi INDEX?
Kiedy należy używać KEY, PRIMARY KEY, UNIQUE KEYi INDEX?
Odpowiedzi:
KEYi INDEXsą 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, WHEREi ORDER BYklauzul.
Wyobraź sobie, że masz tabelę o nazwie usersi 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.
passengersz następującymi polami :, (id, first_name, last_name, age, passport_number)zwykle ustawiasz idkolumnę 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ć NULLwartości. Nie ma potrzeby konfigurowania idkolumny, UNIQUEponieważ ustawienie jej na klucz podstawowy automatycznie gwarantuje, że będzie ona unikalna ... Następnie możesz ustawić passport_numberją UNIQUEtak, aby nie więcej niż jeden pasażer ...
NULLbez 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 NULLwartości, ale unikalny klucz dopuszcza NULLwartości.
Możemy zadeklarować tylko jeden klucz podstawowy w tabeli, ale tabela może mieć wiele unikalnych kluczy (przypisanie kolumny).
PRIMARY KEYI UNIQUE KEYsą 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).
INDEXtworzy 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 KEYmoże być, NULLale PRIMARY KEYnie 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