Czy VARCHAR (100) jest lepszy niż VARCHAR (500) z punktu widzenia wydajności? A co z wykorzystaniem dysku?Czy deklarowana wielkość pola varchar ma wpływ na PostgreSQL?
Mówiąc o PostgreSQL dzisiaj, a nie jakaś baza danych w historii.
Czy VARCHAR (100) jest lepszy niż VARCHAR (500) z punktu widzenia wydajności? A co z wykorzystaniem dysku?Czy deklarowana wielkość pola varchar ma wpływ na PostgreSQL?
Mówiąc o PostgreSQL dzisiaj, a nie jakaś baza danych w historii.
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).
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)
Nie ma różnicy między varchar(m)
i varchar(n)
..
http://archives.postgresql.org/pgsql-admin/2008-07/msg00073.php
Jest różnica między varchar(n)
i text
choć varchar(n)
posiada wbudowany ograniczenia, które muszą zostać sprawdzone i jest rzeczywiście trochę wolniej.
http://archives.postgresql.org/pgsql-general/2009-04/msg00945.php
mówię VARCHAR (m) vs VARCHAR (n), a nie o VARCHAR vs char, który jest to, czego wskazując. – ibz
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. –
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