[wp-hackers] post_status and post_type

Jeff Minard jeff at jrm.cc
Thu Feb 9 16:23:26 GMT 2006

Owen Winkler wrote:
> Why is post_type a varchar(100) and not an enum('post','page', 
> 'attachment')?  Wouldn't that be faster?

Yes, enums are faster.

1) enums are a psuedo look-up table. MySQL stores a smallint val for 
each enum and uses that when doing lookups. It's kind of like having a 
lookup table and doing a join across them, except that mysql does it all 
for you.

2) this means enums are compared, internally, as ints -- a much faster 
query for mysql

3) it also means smaller storage space

4) it, consequently, means smaller index size

So, yes, enums *are* faster -- but by how much at the cost of locking 
the "post types" down, is the real question. Probably not enough for the 
vast majority of wordpress installs.

(Flip side of this arguement is: authors, have your plugins modify the 
DB upon run to check for the enum def, if not there modify to add it. 
SUPER problematic, but possible.)

I like the ideas stated later in the thread of leaving it a varchar to 
allow others to make up their own post types. The only complication this 
involves is whether or not WP would edit non-standard post_types or not. 
Lot's of queries would be needing some updating to make sure they're 
only pulling "post" post_types and so forth.


Mark Jaquith wrote:
> What about post_status="future"?  That still on the table?


As otherwise stated, death to all "< $now" clauses.


More information about the wp-hackers mailing list