Optimising (My)SQL Query

Posted by Simon on Stack Overflow See other posts from Stack Overflow or by Simon
Published on 2010-04-03T18:16:01Z Indexed on 2010/04/03 18:23 UTC
Read the original article Hit count: 257

I usually use ORM instead of SQL and I am slightly out of touch on the different JOINs...

SELECT `order_invoice`.*, `client`.*, `order_product`.*, SUM(product.cost) as net 
FROM `order_invoice` 
LEFT JOIN `client` ON order_invoice.client_id = client.client_id 
LEFT JOIN `order_product` ON order_invoice.invoice_id = order_product.invoice_id 
LEFT JOIN `product` ON order_product.product_id = product.product_id 
WHERE (order_invoice.date_created >= '2009-01-01') AND (order_invoice.date_created <= '2009-02-01') 
GROUP BY `order_invoice`.`invoice_id`

The tables/ columns are logically names... it's an shop type application... the query works... it's just very very slow...

I use the Zend Framework and would usually use Zend_Db_Table_Row::find(Parent|Dependent)Row(set)('TableClass') but I have to make lots of joins and I thought it'll improve performance by doing it all in one query instead of hundreds...

Can I improve the above query by using more appropriate JOINs or a different implementation? Many thanks.

© Stack Overflow or respective owner

Related posts about zend-db

Related posts about zend-framework