A bitmask isn't a column type; it's an operation to perform on a column to extract a bit. Bitmasking is handled by functions, and MySQL can't index the results of functions. That's why I say MySQL can't index bitmasks. You can put an index on the bitfield/int column, but it's useless for the majority of lookups.* *The index could function for conjunctive (AND) conditions beginning with the leftmost bit and not skipping any bits, but the query would have to be carefully constructed. ----- "Earnie Boyd" <earnie@users.sourceforge.net> wrote:
-----Original Message----- From: Earnie Boyd <earnie@users.sourceforge.net>
Date: Sat, 03 May 2008 09:59:43 To:development@drupal.org Subject: Re: [development] User Status [WAS: User last access]
Quoting Larry Garfield <larry@garfieldtech.com>:
A) Make status have a lot of different states with int/consts. B) Make status a bitmask field (compact but harder to query). C) Break status out into a series of is_foo fields (possibly a lot
of
needless data).
I like option B for this.
Quoting David Strauss <david@fourkitchens.com>:
Remember that MySQL cannot truly index bitmasks. Consider a series of CHAR(0) columns, which would take the same space but be indexable.
I was thinking more of an integer field used as a bitmask.
Earnie -- http://for-my-kids.com/ -- http://give-me-an-offer.com/