Hi!  Interesting.  Can you post the EXPLAIN SELECT for each of the
statements?  Also, what version of Drizzle are you using?

Thanks!

jay

On Sat, Apr 17, 2010 at 1:50 PM, Wilfried Schobeiri <[email protected]> 
wrote:
> Hi all! Good hanging out with those of you at MySQLConf & Drizzle Day this 
> past week. Hope you guys got home safe.
>
> I give you a sample query. id is primary key, uid is indexed. The table has 
> about 20 non-indexed columns. on top of taht.
>
> SELECT * FROM user_facebook WHERE uid < 1000000 ORDER BY id DESC LIMIT 0,12
>
> (2 min 24.54 sec)
>
> vs
>
> SELECT * FROM user_facebook INNER JOIN
> (
>        SELECT id FROM user_facebook WHERE uid < 1000000 ORDER BY id DESC 
> LIMIT 0,12
> )
> as SUBSELECT_TABLE
> ON user_facebook.id = SUBSELECT_TABLE.id
>
> (1.95 sec)
>
>
> Same results, substantial performance boost. Worth noting is that the more 
> complicated or large the where set is (especially if there's an IN() set), or 
> if there's any aggregation going on, the delayed join version gets almost 
> exponentially faster. One could see 10-1000x increases in query time.
>
> I'm not sure what's going on with the first query (or if we can do anything 
> about it), but it seems like it's trying to do the order and limiting on the 
> entire column set instead of using only what's applicable to do the ordering 
> and limiting. If we can optimize around the primary key, perhaps there can be 
> some massive performance gains out of it.
>
> -Wilfried (nphase)
>
>
> _______________________________________________
> Mailing list: https://launchpad.net/~drizzle-discuss
> Post to     : [email protected]
> Unsubscribe : https://launchpad.net/~drizzle-discuss
> More help   : https://help.launchpad.net/ListHelp
>

_______________________________________________
Mailing list: https://launchpad.net/~drizzle-discuss
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~drizzle-discuss
More help   : https://help.launchpad.net/ListHelp

Reply via email to