Thread: Btree index on varchar

Btree index on varchar

From
Alexaki Sofia
Date:
Hello,

I have a question for Btree indexes on a varchar field.
Does postgres (7.0.2) uses a special encoding when creating
Btree indexes on varchar??

Is it much more efficient to create indexes  on integer than
on strings with average length 30 chars??

Thank you in advance for your help

Regards
Sofia Alexaki



Re: Btree index on varchar

From
Tom Lane
Date:
Alexaki Sofia <alexaki@ics.forth.gr> writes:
> I have a question for Btree indexes on a varchar field.
> Does postgres (7.0.2) uses a special encoding when creating
> Btree indexes on varchar??

"Special encoding"?  No ... a varchar is a varchar.

> Is it much more efficient to create indexes  on integer than
> on strings with average length 30 chars??

It'd save some space and thereby save I/O time.  But I dunno about
"much" more efficient.  Figuring that there's a dozen or so bytes of
index-entry overhead in addition to the value itself, you might be
looking at a factor of 3 or so difference in index tuple size, hence
about a 3x savings in I/O for index scans; but that wouldn't translate
to anything like a factor of 3 for the total operation, since the number
of main-table tuples visited wouldn't change.  Try it and see, but I'd
guess that the net effect would be relatively small.

Really what you want to be asking yourself is which columns do you
need an index on for your query logic.  What datatype they are is a
minor consideration.
        regards, tom lane