W wielu kursach, książkach i ofertach pracy widziałem pola tekstowe zdefiniowane jako VARCHAR (255) jako rodzaj domyślnego dla „krótkiego” tekstu. Czy jest jakiś dobry powód, dla którego długość 255 jest wybierana tak często, poza tym, że jest ładną okrągłą liczbą ? Czy jest to wstrzymanie od jakiegoś czasu w przeszłości, kiedy istniał dobry powód (niezależnie od tego, czy ma to zastosowanie dzisiaj)?
Zdaję sobie oczywiście sprawę, że ściślejsza granica byłaby bardziej idealna, gdybyś w jakiś sposób znała maksymalną długość struny. Ale jeśli używasz VARCHAR (255), prawdopodobnie oznacza to, że nie znasz maksymalnej długości, tylko że jest to „krótki” ciąg.
Uwaga: znalazłem to pytanie ( varchar (255) v tinyblob v tinytext ), które mówi, że VARCHAR ( n ) wymaga n +1 bajtów pamięci dla n <= 255, n +2 bajtów pamięci dla n > 255. Czy to jedyny powód? Wydaje się to dość arbitralne, ponieważ oszczędzałbyś tylko dwa bajty w porównaniu z VARCHAR (256), a równie łatwo mógłbyś zaoszczędzić kolejne dwa bajty, deklarując go jako VARCHAR (253).
255, ponieważ jest to największa liczba znaków, które można policzyć za pomocą liczby 8-bitowej. Maksymalizuje użycie 8-bitowego licznika, bez niepoważnego wymagania kolejnego całego bajtu do policzenia znaków powyżej 255.
Gdy jest używany w ten sposób, VarChar używa tylko liczby bajtów + 1 do przechowywania tekstu, więc równie dobrze możesz ustawić go na 255, chyba że chcesz mieć sztywny limit (na przykład 50) liczby znaków w polu.
źródło
utf8
,varchar(85)
jest granicą, powyżej której przecięcie kończy bajt długości z jednego do dwóch bajtów. Jeśli takutf8mb4
, to jestvarchar(63)
. Są one istotne, ponieważ są maksymalnymi wartościami, do których można rozszerzyć długość VARCHAR za pomocą internetowego ALTER TABLE . W konsekwencji wyprowadziłem te liczby, tworząc tabelę zvarchar(2) charset utf8
kolumną i sprawdzając, jak dalece byłem w stanie ją rozszerzyćALGORITHM=INPLACE
.Prawdopodobnie dlatego, że zarówno SQL Server, jak i Sybase (żeby wymienić dwa, które znam) miały kiedyś maksymalnie 255 znaków w liczbie znaków w
VARCHAR
kolumnie. W przypadku SQL Server zmieniło się to w wersji 7 w latach 1996/1997 ... ale stare nawyki czasami ciężko umierają.źródło
Odpowiem na dosłowne pytanie: nie , nie ma dobrego powodu, dla którego VARCHAR (255) jest używany tak często (rzeczywiście istnieją powody , jak omówiono w innych odpowiedziach, po prostu nie są dobre). Nie znajdziesz wielu przykładów projektów, które zakończyły się katastrofalną klęską, ponieważ architekt wybrał VARCHAR (300) zamiast VARCHAR (255). Byłby to problem prawie całkowicie nieistotny, nawet gdybyś mówił o CHAR zamiast VARCHAR.
źródło
Kiedy mówisz,
2^8
że otrzymujesz256
, ale liczby w kategoriach komputerów zaczynają się od liczby0
. Więc masz255
, możesz sondować to w masce internetowej dla adresu IP lub w samym IP.255
to maksymalna wartość 8-bitowej liczby całkowitej:11111111 = 255
To pomaga?
źródło
Nie, nie oszczędzasz dwóch bajtów deklarując 253. Implementacja varchar to najprawdopodobniej licznik długości i niezakończona tablica o zmiennej długości. Oznacza to, że jeśli zapiszesz "hello" w varchar (255), zajmiesz 6 bajtów: jeden bajt na długość (cyfra 5) i 5 bajtów na pięć liter.
źródło
VARCHAR
ten sposób podważa cały sens używaniaVARCHAR
zamiastCHAR
.Liczba jednobajtowa bez znaku może zawierać zakres [0-255] włącznie. Więc kiedy widzisz 255, dzieje się tak głównie dlatego, że programiści myślą w bazie
10
( ?) :)Właściwie przez chwilę 255 było największym rozmiarem, jaki można nadać VARCHAR w MySQL, a używanie VARCHAR zamiast TEXT przy indeksowaniu i innych problemach ma zalety.
źródło
W wielu aplikacjach, takich jak MsOffice (do wersji 2000 lub 2002), maksymalna liczba znaków na komórkę wynosiła 255. Przenoszenie danych z programów zdolnych do obsługi ponad 255 znaków na pole do / z tych aplikacji było koszmarem. Obecnie limit jest coraz mniej przeszkadzający.
źródło
0000 0000 -> to jest 8-bitowa liczba binarna. Cyfra oznacza trochę.
Liczysz tak:
0000 0000 → (0)
0000 0001 → (1)
0000 0010 → (2)
0000 0011 → (3)
Każdy bit może mieć jedną z dwóch wartości: włączony lub wyłączony. Całkowitą najwyższą liczbę można przedstawić przez pomnożenie:
Lub
Odejmujemy jeden, ponieważ pierwsza liczba to 0.
255 może pomieścić całkiem sporo (bez zamiaru gry słów) wartości.
Gdy używamy większej liczby bitów, maksymalna wartość rośnie wykładniczo. Dlatego z wielu powodów dodawanie większej liczby bitów jest przesadą.
źródło
Innym powodem może być to, że w bardzo starych bibliotekach dostępu do danych w systemie Windows, takich jak RDO i ADO (wersja COM nie ADO.NET), trzeba było wywołać specjalną metodę GetChunk, aby pobrać dane z kolumny zawierającej więcej niż 255 znaków. Jeśli ograniczyłeś kolumnę varchar do 255, ten dodatkowy kod nie był konieczny.
źródło