On 5/28/05, Terence wrote: > > Master ID is used to distinguish multiple helpdesks. In this table there > are 100k records, but only 10 distinct master_id's. > > ticket_id master_id > 1 1 > 2 1 > 3 2 > 4 2 > 5 3 > ... ...
> SELECT * > FROM helpdesk_tickets ht, helpdesk_category_master hcm, > helpdesk_sub_category_master hscm > WHERE ht.master_id = '1' > AND ht.category_id = hcm.category_id > AND ht.sub_category_id = hscm.sub_category_id > ORDER BY ticket_id DESC > LIMIT 0,10 With proper foreign keys all tickets are guaranteed to match categories and subcategories. That means you can push down the LIMIT to just the helpdesk_tickets table: SELECT * FROM ( SELECT * FROM helpdesk_tickets WHERE master_id = 1 ORDER BY ticket_id DESC LIMIT 0,10) NATURAL JOIN helpdesk_category_master NATURAL JOIN helpdesk_sub_category_master With an index on (master_id, ticket_id) this should (nearly) constant-time. > I have thought of options such as using temporary tables to just grab > the last 10 tickets and then do an IN query, however I need to display > totals, so that would require me to run the query again. At which point does running the query again become faster then your current method? Jochem -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]