Bazy danych są głęboko zainteresowane wydajnością - szybkością i minimalizacją pamięci. W większości innych części świata komputerowego nie będziesz się przejmować liczbą znaków w ciągu znaków; może być jeden, może to być cała zawartość encyklopedii; wszystko to tylko struna. W rzeczywistości wiele języków nawet nie przejmuje się tym, czy jest to ciąg, czy liczba.
Ale gdy komputery stają się szybsze i zyskują więcej pamięci, ludzie umieszczają więcej danych w swoich bazach danych i wykonują bardziej wyszukane zapytania. W przypadku bazy danych procesor i pamięć są dziś tak samo ograniczające, jak w czasach pamięci głównej 64 KB i dysków twardych 10 Mb (na komputerach mainframe ).
Ustalona liczba bajtów jest znacznie łatwiejsza w obsłudze niż liczba o zmiennej długości. Z 10 bajtami łatwiej jest sobie poradzić niż 1 000 000. Tak więc twoja baza danych chce, abyś dał jej wskazówkę, aby mogła dostarczyć gigabajt wyników z terrabajtów danych w mikrosekundach. Jeśli nie używasz bazy danych tak mocno, nie będziesz potrzebować szybkości, jaką ona oferuje, i będziesz zirytowany niepotrzebnymi pytaniami. Ale jeśli potrzebujesz wydajności, z przyjemnością udzielisz wskazówek.
Jak zauważono w innych odpowiedziach, użyj, char
jeśli zawsze używa określonej liczby znaków, varchar
jeśli długość może się różnić, ale nie staje się zbyt duża ( domyślam się, że większość DB traktuje to jako char
lub w text
zależności od rozmiaru), i text
jeśli może być dowolnej długości. Jeśli Twój SQL próbuje użyć text
kolumny, najlepiej może ją jakoś podsumować i umieścić w char
małej lub małej varchar
kolumnie, a następnie zrób where
to i order by
na tym. Oczywiście tylko wtedy, gdy liczy się wydajność.
text
jest przestarzała. Istnieją również względy użytkowania związane z miejscem przechowywania danych i sposobem ich uzyskania.