Обсуждение: varchar vs char vs text
if I have a column that's gonna be between 5-300 charactors... should I go with a a charactor? varchar? or a text? what's the performance penalty going with a text instead of a varchar... or a char? I don't need to index it.... nor search based on it.. -- Singer XJ Wang - swang@cs.dal.ca - ICQ: 201253 ------------------------------------------------------------------------- "WAR stands for We Are Right!"
Singer Wang <swang@cs.dal.ca> writes: > if I have a column that's gonna be between 5-300 charactors... > should I go with a a charactor? varchar? or a text? > > what's the performance penalty going with a text instead of a > varchar... or a char? I don't need to index it.... nor search based > on it.. PostgreSQL's varchar and text are both based on the same internal type. Varchar only limits the length of the string that can be inserted. Char pads the strings with ' ' to the desired lengh. In other words if I were to insert 'Jason' into a char(8) it would be padded to 'Jason '. In other words, use varchar if you have a hard limit that you want to enforce, char if you want to guarantee string lengths, and text for everything else. Jason
On Tue, 12 Feb 2002, Singer Wang wrote:
> if I have a column that's gonna be between 5-300 charactors... should I go with a
> a charactor? varchar? or a text?
>
> what's the performance penalty going with a text instead of a varchar... or a char?
> I don't need to index it.... nor search based on it..
I'd go with text. It's not SQL92, though. varchar is technically
supposed to have a limit of 255, but I don't think that limit
exists in Postgres.
-- Brett
http://www.chapelperilous.net/
------------------------------------------------------------------------
To say you got a vote of confidence would be to say you needed a vote of
confidence.
-- Andrew Young
"Brett W. McCoy" <bmccoy@chapelperilous.net> writes:
> I'd go with text. It's not SQL92, though.
Check.
> varchar is technically supposed to have a limit of 255,
Certainly not; the spec says
The maximum value of <length> is implementation-defined.
There may be implementations that are lame enough to limit it to 255,
but Postgres isn't one of them. IIRC, we set a rather arbitrary upper
limit of 10000000 on the length (mainly on the theory that anything
larger is either a typo, or you really don't want a limit at all, in
which case you oughta be using text).
At least in 7.2, it also works to say just "varchar" with no length
limit; this is functionally equivalent to "text" except perhaps for
some corner cases involving ambiguous-data-type resolution. But
this is not SQL-spec-compliant either.
regards, tom lane
On Tue, 12 Feb 2002, Tom Lane wrote:
> > I'd go with text. It's not SQL92, though.
>
> Check.
>
> > varchar is technically supposed to have a limit of 255,
>
> Certainly not; the spec says
I sit corrected. :-)
-- Brett
http://www.chapelperilous.net/
------------------------------------------------------------------------
You can bear anything if it isn't your own fault.
-- Katharine Fullerton Gerould