Wymagania: Podczas niedawnej rozmowy kwalifikacyjnej zapytano mnie, jaka jest różnica między SQL Server database int a guid jako kluczem głównym.Obie mają swoje plusy i minusy, proszę, rozważ je zgodnie z rzeczywistymi sytuacjami biznesowymi。
Oryginalny tekst 1:Logowanie do linku jest widoczne.
Zalety stosowania INT jako klucza głównego:
1. Wymaga niewielkiej przestrzeni danych, tylko 4 bajty.
2. Wydajność używania INT do operacji wstawiania i aktualizacji jest lepsza niż w GUID, więc użycie int poprawi wydajność aplikacji.
3. Operacje indeksowania i łączenia – int ma najlepszą wydajność.
4. Łatwe do zapamiętania.
5. Wsparcie uzyskania najnowszej wartości przez funkcję, taką: Scope_Indentity().
Wady używania INT jako klucza podstawowego
1. Jeśli często występuje łączenie tabel, może dojść do duplikacji kluczy pierwotnych.
2. Istnieją ograniczenia dotyczące zakresu wykorzystania danych INT. Jeśli ilość danych jest duża, może ona przekraczać zakres wartości INT.
3. Trudno jest przetwarzać rozproszone tabele przechowywanych danych.
Zalety stosowania GUID jako klucza głównego:
1. Jest wyjątkowa.
2. Możliwości powielania są niewielkie.
3. Nadaje się do operacji wstawiania i aktualizacji w dużej ilości danych.
4. Łączenie danych między serwerami jest bardzo wygodne.
Wady stosowania GUID jako klucza głównego:
1. Przestrzeń pamięci jest duża (16 bajtów), więc zajmie większą powierzchnię dysku.
2. Trudno to zapamiętać. Wydajność operacji łączenia jest niższa niż w przypadku int.
3. Nie ma wbudowanej funkcji do uzyskania najnowszego wygenerowanego klucza głównego GUID.
4. GUID jako klucz główny zostanie dodany do innych indeksów w tabeli, co obniży wydajność.
Streszczenie:
Powyższe wymieniono zalety i wady typów danych GUID i INT jako kluczy głównych. Myślę, że przy dużych wolumenach danych zaleca się używanie guid jako klucza głównego. zaśUżycie int da ci najlepszą wydajność。
Komentarz: UżycieWydajność uporządkowanego GUID znacznie się poprawia。
Oryginalny tekst drugi:Logowanie do linku jest widoczne.
Tożsamość to typ typu całego, dziesiętny bez definicji dziesiętnej, bigint jest akceptowalny
Guid jest stały binarny(16), czyli 16 bajtów
Tożsamość jest zwiększana (lub odejmowana), a GUID jest losowy, więc w miarę wstawiania danychPierwszy nie wygeneruje fragmentów, drugi tak, a ponieważ drugi jest w nieodpowiedniej kolejności, kolejność musi być dostosowana po wstawieniu, więc pierwsza jest zazwyczaj lepsza od drugiej pod względem wydajności.
Duża ilość informacji jest zwykle podzielona na tabele, więc tożsamość jest w wielu przypadkach jeszcze bardziej odpowiednia
Jeśli chodzi o znaczenie klucza głównego, to zależy od tego, jak go postrzegasz przy projektowaniu – dla samego przetwarzania danych klucz główny nie musi mieć znaczenia, a jeśli wymagasz, aby klucz główny zawierał znaczenie biznesowe, to klucz główny tożsamości oczywiście nie ma znaczenia, ale ogólnie lepiej oddzielić znaczenie biznesowe od przetwarzania danych, bo biznes ciągle się zmienia, jeśli chcesz nadać znaczenie głównemu kluczowi w projektowaniu tabeli, wtedy biznes się zmienia, musisz bardziej dostosować strukturę tabeli.
Oryginalny tekst trzeci:Logowanie do linku jest widoczne.
1. W systemach, które często wymagają migracji danych, zaleca się używanie Guid. A dodawanie indeksów nieklastrowanych do odpowiadających pol klucza obcego, czyli pol używanych do zapytań o połączenia, przynosi ogromne korzyści dla poprawy wydajności. Pole warunku gdzie można również dodać w odpowiednim przypadku dla indeksów nieskupionych.
2. Używając typu Guid jako klucza głównego, typ danych powinien być unikalny i należy go zapamiętaćAnuluj klucz główny "Indeksy agregowane”
3. W systemach, które nie wymagają migracji lub małych systemach, nadal bardzo wygodne jest użycie int jako klucza głównego, a wydajność jest pewna poprawa.
(Koniec)
|