Który typ danych sql powinniśmy używać do numerycznych baz klucza podstawowego:Sql Typ danych dla klucza podstawowego - SQL Server?
- int
- bigint
- numeryczny
- pływak
Który typ danych sql powinniśmy używać do numerycznych baz klucza podstawowego:Sql Typ danych dla klucza podstawowego - SQL Server?
Generalnie int
.
bigint
jeśli myślisz, że będziesz miał więcej wierszy niż atomy we wszechświecie.
uniqueidentifier
jest przydatna, gdy trzeba globalnie unikalne klucze (klucze, które są gwarantowane jest unikatowy na wszystkich tabel w schemacie, może nawet powszechnie unikalny (nie pamiętam))
pozostałe dwa I nie użyłby ich, nie są one typami integralnymi (mają ułamki, które nie mają większego sensu jak klucze).
Jeśli wybierzesz unikalnyidentyfikator, rozważ użycie go jako klucza podstawowego NIEAKTYWNIONEGO, w przeciwnym razie wstawianie może powodować problemy z wydajnością. – Brannon
Dzięki za ulepszenie, Brannon. –
int jest ograniczone "tylko" około 2 miliardy. Osiągnąłem już ten limit dzięki niektórym funkcjom logowania;) – Mose
Jednym z głównych powodów, dla których nie można używać identyfikatorów GUID dla PK, jest ich straszliwy współczynnik wypełnienia dla stron indeksowych - takie nadużycie może znacznie zwiększyć twoje koszty wydajności we/wy. Identyfikatory GUID powinny być pozostawione jako AK, a zamiast tego powinny wywoływać kwerendy z pochodnymi PK, gdy tylko jest to możliwe.
To naprawdę jest trochę niedokładne - GUID, ponieważ PK jest w porządku - GUID, ponieważ KLUCZ KLAWIATURA jest desaster. PK per se nie ma wpływu na fizyczną organizację danych - to jest zadanie klucza klastrowania :) –
dla procesorów 32-bitowych, int najprawdopodobniej będzie najbardziej wydajnym formatem przetwarzania.
Granice słów są mniej istotne niż zajmowane miejsce przełączające się z Int do BigInt - chyba że spodziewamy się liczby wierszy w miliardach, z wyjątkiem bajtów i spędź je w innym miejscu. Koszt wejścia/wyjścia jest o kilka zamówień droższy niż dostęp do pamięci. – stephbu
Zgadzam się, dodaję kolejny powód użycia int. – dkretz
Naprawdę trzeba zachować dwa oddzielne problemy APT:
1) klucz podstawowy jest logiczną konstrukcją - jeden z głównych kandydatów, który jednoznacznie identyfikuje i niezawodnie wiersz w tabeli. Może to być cokolwiek, naprawdę - INT, GUID, string - wybierz to, co ma sens dla twojego scenariusza.
2) grupowanie klucz (kolumna lub kolumn, które definiują „indeksu klastrowego” na stole) - jest to fizyczny przechowywania związane rzeczą, a tu, mały, stabilny, coraz większa typ danych to najlepszy wybór - INT lub BIGINT jako domyślna opcja.
Domyślnie klucz podstawowy na tabeli programu SQL Server jest również używany jako klucz klastrowania - ale nie musi tak być! Osobiście wydaje mi się, że z czasem osiągnięto znaczny wzrost wydajności, dzieląc poprzedni klucz klastrowy oparty na GUID na dwa oddzielne klucze - klucz podstawowy (logiczny) na identyfikatorze GUID i klucz klastrowy (zamówienie) na oddzielnej ID użytkownika INT (1 , 1) kolumna.
Fragmentacja indeksu została obniżona do minimalnych poziomów, a tym samym wydajność wyszukiwania indeksu została podwyższona - wysoce zalecane!
Marc
unsigned int
o cokolwiek rozmiar, który spełnia swoje szczególne potrzeby
Z wyjątkiem serwera SQL nie ma niepodpisanych typów danych. – Joe
To zależy! W jakiej sytuacji? Wymagane są dodatkowe informacje ... –