In the last episode (Nov 23), John Kopanas said:
> I have the following query:
> 
>      UPDATE companies c
>      SET
>        total_annual_service_charge =
>          (
>            SELECT SUM(annual_service_charge)
>            FROM purchased_services ps WHERE ps.company_id = c.id
>          );
> 
> 
> It takes 1s to run when I have two tables of 500 rows, 4s with two
> tables of 1000 rows, 15s to run with two tables to run with 2000
> rows, 90s for two tables of 5000 rows.  This is ridiculous.  And I
> need to run it on two tables of approx. 500,000 rows.  I need a
> better solution.
> 
> And there is an index on ps.company_id and c.id.  Any suggestions on
> how I can improve my query?

If you're I/O bound during this query, try an index on
(company_id,annual_service_charge) on your purchased_services table. 
That'll let the subquery complete using just an index scan.  If that
doesn't help, try mos's idea.

-- 
        Dan Nelson
        [EMAIL PROTECTED]

-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to