From: | Tino Wildenhain <tino(at)wildenhain(dot)de> |
---|---|
To: | Merlin Moncure <mmoncure(at)gmail(dot)com> |
Cc: | Andrew Sullivan <ajs(at)crankycanuck(dot)ca>, pgsql-general(at)postgresql(dot)org |
Subject: | Re: How to modify ENUM datatypes? |
Date: | 2008-04-28 19:27:09 |
Message-ID: | 4816250D.7010206@wildenhain.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Hi,
Merlin Moncure wrote:
> On Thu, Apr 24, 2008 at 3:01 PM, Tino Wildenhain <tino(at)wildenhain(dot)de> wrote:
>> Merlin Moncure wrote:
>>> I think you're being a little too hard on enums here. I was actually
>>> in the anti-enum camp until it was demonstrated to me (and in my own
>>> testing) that using enum for natural ordering vs. fielding the
>>> ordering of the type out to a join is can be a huge win in such cases
>>> where it is important. Relational theory is all well and good, but in
>>> practical terms things like record size, index size, and query
>>> performance are important.
>>>
>> Uhm. Sorry what? Can you demonstrate this particular use?
>> When I first saw discussion about enumns I kinda hoped they
>> will be implemented as kind of macro to really map to a table.
>> But here you go. I'm still looking for a good example to
>> demonstrate the usefullness of enums (same for arrays for that
>> matter)
>
> You must not be aware that enums are naturally ordered to make that
> statement. Suppose your application needs to order a large table by
> a,b,c where b is the an 'enum' type of data. With an enum, the order
> is inlined into the key order, otherwise it's out of line, meaning
> your you key is larger (enum is 4 bytes, varchar is guaranteed to be
> larger), and you need to join out to get the ordering position, use a
> functional index, or cache it in the main table.
I see, but couldn't you just use int in this case? And map only when
you need the values for display (usually you want it localized anyway)
> I agree with disagree with you on arrays. I think they are generally
> a bad idea in terms of using them as a column type. However they are
> useful passing data to/from functions and back/forth from the client.
Yes of course, I thought of that (wondering why we can't use value
expressions everywhere)
Tino
From | Date | Subject | |
---|---|---|---|
Next Message | Jeff Davis | 2008-04-28 21:35:41 | Re: How to modify ENUM datatypes? |
Previous Message | Martin Marques | 2008-04-28 18:15:31 | Re: status on pgiomonitor |