2009-07-01 12 views

Odpowiedz

22

Są identyczne.

Z dokumentacji PostgreSQL:

http://www.postgresql.org/docs/8.3/static/datatype-character.html

Wskazówka: Brak skuteczności różnice między tymi trzema typami, oprócz zwiększonego rozmiaru pamięci po użyciu typu pusty wyściełane, a kilka dodatkowych cykli, aby sprawdzić długość, gdy przechowuje się w ograniczonej długości kolumnie . Podczas gdy postać (n) ma zalety wydajnościowe w niektórych innych systemach baz danych , nie ma takich zalet w PostgreSQL w postaci . W większości przypadków należy użyć tekstu lub zmiennej o numerze .

Tutaj mówią o różnicach między char (n), varchar (n) i tekstem (= varchar (1G)). Oficjalna historia mówi, że nie ma różnicy między varchar (100) a tekstem (bardzo duży varchar).

+0

mówię VARCHAR (m) vs VARCHAR (n), a nie o VARCHAR vs char, który jest to, czego wskazując. – ibz

+1

Sprawdź ponownie. Odnoszą się one do TRZY są identyczne. To znaczy. wydajność varchar (n) jest taka sama jak tekst, który jest varchar (LOTS). Jedyna różnica między TRZECHMI typami to dopełnienie i ograniczenie długości. Nie stosuje się między varchar (100) i varchar (500), więc mówią, że są takie same. –

+1

Tak, wspominają wszystkie trzy, ale nalegają tylko na dwie. Tak naprawdę zadałem to pytanie na SO właśnie dlatego, że nie byłem zadowolony z tego konkretnego akapitu w dokumencie i szukałem bardziej wnikliwego wyjaśnienia. I nie, TEKST * nie * jest taki sam jak VARCHAR (PARTS). TEKST jest przechowywany poza rzędem. Przynajmniej AFAIK. – ibz

6

TEKST/to/te same jak VARCHAR bez wyraźnej długości tekst

„Wymaganie przechowywania krótkim łańcucha (do 126 bajtów) wynosi 1 bajt plus faktyczne Generuje obejmuje dopełnienie przestrzeni w przypadku charakteru. Dłuższe struny mają 4 bajty narzut zamiast 1. długich ciągów są kompresowane przez system automatycznie, tak fizyczna wymóg na dysku może być mniejsza. Bardzo długie wartości także sto czerwony w tabelach tła w taki sposób, aby nie zakłócały szybkiego dostępu do krótszych wartości kolumn . W każdym razie, najdłuższy ciąg znaków, który można przechowywać około 1 GB.”

odnosi się zarówno do VARCHAR i tekst (od VARCHAR (n) jest tylko ograniczona wersja tekstowa). Ograniczając VARCHARS sztucznie nie ma żadnych rzeczywistych korzyści związanych z pamięcią masową lub wydajnością (obciążenie jest oparte na faktycznej długości struny, a nie długości bazowego varcharu), z wyjątkiem prawdopodobnie porównań z symbolami wieloznacznymi i wyrażeniami regularnymi (ale na poziomie, w którym zaczyna to mieć znaczenie, prawdopodobnie powinieneś zobaczyć coś w rodzaju wsparcia indeksowania pełnotekstowego PostgreSQL)

Powiązane problemy