Używam int (255) w mysql jako mój identyfikator. Czy to wystarczająco długo? Jeśli mam około 1 000 000 rekordów ... Dziękuję.Jaki jest numer MAX, jeśli przechowuję int (255) w MySQL?
Odpowiedz
Coś prawdopodobnie po prostu zamienia to na int(11)
dla ciebie. Ponieważ nie można mieć 255 widocznych cyfr w numerze int
, maksymalną wartością będzie 2147483647
.
Jeśli potrzebujesz więcej, możesz ustawić to ustawienie jako niepodpisane: , since I'm assuming you have no negative ids and then you can have up to
4294967295`.
Jeśli kiedykolwiek będziesz mieć więcej niż 4 miliardy rekordów (bardzo mało prawdopodobne, jeśli masz teraz 1 milion), możesz zamiast tego użyć numeru bigint
, który umożliwia przechowywanie numerów do 18446744073709551615
za niewielką opłatą więcej miejsca do przechowywania oczywiście.
Jeśli niezapiszony, od 0 do 4 294 967 295, więc jest to więcej niż eough.
Więcej informacji in mysql docs.
identyfikacyjne są zazwyczaj unsigned ... Więc ... – Deele
@Deele: docs (* te, które związane *) stwierdzają, że liczba całkowita jest podpisany domyślnie i że UNSIGNED jest opcjonalny (a nie standardowe) – gbn
@ gbn, czy trudno ci było przeczytać pierwsze dwa słowa w mojej odpowiedzi? – Deele
-2147483648 do 2147483647, jak na docs za podpisanym wartości 32-bitowej liczby całkowitej
255 jest tylko wyświetlanie szerokości i nie wpływają na zakres wartości
STORAGE INT
w mysql
zastosowanie 4 bajtów i zakres od -2147483648 do 2147483647. Jeśli używasz unsigned int, zakres wynosi 0 do 4294967295.
Zobacz this blog.
SELECT ~0 as max_bigint_unsigned
, ~0 >> 32 AS max_int_unsigned
, ~0 >> 40 AS max_mediumint_unsigned
, ~0 >> 48 AS max_smallint_unsigned
, ~0 >> 56 AS max_tinyint_unsigned
, ~0 >> 1 AS max_bigint_signed
, ~0 >> 33 AS max_int_signed
, ~0 >> 41 AS max_mediumint_signed
, ~0 >> 49 AS max_smallint_signed
, ~0 >> 57 AS max_tinyint_signed
\G
*************************** 1. row ***************************
max_bigint_unsigned: 18446744073709551615
max_int_unsigned: 4294967295
max_mediumint_unsigned: 16777215
max_smallint_unsigned: 65535
max_tinyint_unsigned: 255
max_bigint_signed: 9223372036854775807
max_int_signed: 2147483647
max_mediumint_signed: 8388607
max_smallint_signed: 32767
max_tinyint_signed: 127
1 row in set (0.00 sec)
oznacza to, że typ 255 jest bezużyteczny? – DNB5brims
Tak, żadna liczba całkowita nie będzie wyświetlana jako 255 znaków. Najdłuższy to (11), który wystarcza dla symbolu '-' i 10 cyfr. Jeśli używasz nieprzypisanego int, możesz równie dobrze ustawić na int (10) – Paulpro