Assume my db will have millions of records and frequent selects.

If I plan on have a field that can be one of multiple states (A, B, C or
All), is it better to store as ENUM or TINYINT (as a mask, such that A =
1, B = 2, C = 3 and if I know that, then All = 6, and none = 0). I'm
only talking SPEED here in SELECT queries, not the added benefit of
having a 'multiple enum' as it were.

Furthermore, assume a record has two fields that are both binary
(true/false) toggles. This could be represented as:
        Field_A enum("true", "false"),
        Field_B enum("true", "false")
OR
        Field_AB enum("A", "B", "Both", "None")
OR 
        # using the mask idea from above
        Field_AB tinyint(1) unsigned   
      

Is there any benefit to using one method over the other (again,
speedwise only)? My gut tells me the last is better, albeit a bit more
confusing to those who don't know what the number represents, but I'm
not sure if the query is optimized somehow before getting processed with
an ENUM down to numbers anyways.

Another thing, say I have 
        Field enum("true", "false")
And later ALTER TABLE to be
        Field enum("on", "off")
Will all the records 'update' to the right name automatically, or will
they all still show 'true'/'false'?

Lastly, should I be using a "SET" instead of "ENUM" for this?

Daevid.


---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to