Can't help without the SHOW CREATE TABLEs.

Perhaps e needs one of these:
INDEX(zzk)
INDEX(ProcModeCode, dateexam)  -- in that order
(I can't predict which index it would use.)

Are IdAppt the same datatype and collation in each table?

> -----Original Message-----
> From: James W. McNeely [mailto:jmcne...@nwrads.com]
> Sent: Wednesday, November 14, 2012 2:34 PM
> To: mysql@lists.mysql.com
> Subject: query tuning
> 
> I have a query I'm having trouble with. If do this query which is DATE plus
> ProcModecode, it is very fast:
> 
> SELECT e.zzk FROM exams e
> -- JOIN Appt_ a ON e.IdAppt = a.IdAppt
> -- JOIN Affil_ af ON a.IdAffil_primary = af.IdAffil WHERE e.dateexam >=
> '2012-09-01' AND e.dateexam <= '2012-09-30'
> AND e.ProcModeCode = 'P'
> 
> Notice that the joins are commented out.
> 
> If I do this query, which doesn't have the ProcModeCode, but does have the
> IdPract across the join, it is also fast, but not as fast:
> 
> SELECT e.zzk
> FROM exams e
> JOIN Appt_ a ON e.IdAppt = a.IdAppt
> JOIN Affil_ af ON a.IdAffil_primary = af.IdAffil WHERE e.dateexam >= '2012-
> 09-01' AND e.dateexam <= '2012-09-30'
> AND af.IdPract = 'D00400'
> 
> BUT, if I do this, with the ProcModeCode AND the IdPract, it is so slow I
> have to kill the query:
> 
> SELECT e.zzk
> FROM exams e
> JOIN Appt_ a ON e.IdAppt = a.IdAppt
> JOIN Affil_ af ON a.IdAffil_primary = af.IdAffil WHERE e.dateexam >= '2012-
> 09-01' AND e.dateexam <= '2012-09-30' AND af.IdPract = 'D00400' AND
> e.ProcModeCode = 'L'
> ORDER BY e.zzk DESC LIMIT 30
> 
> Here is the result of an explain on this:
> 
> id    select_type     table   type    possible_keys   key     key_len ref
>       rows    Extra
> 1     SIMPLE  e       index   dateexam,IdAppt,ProcModeCode    PRIMARY 4
>       NULL    1121043 "Using where"
> 1     SIMPLE  af      ref     IdAffil,IdPract IdPract 51      const   1
>       "Using where"
> 1     SIMPLE  a       ref     IdAppt  IdAppt  99      RIS_archive.e.IdAppt    
> 1
>       "Using where"
> 
> Any ideas about how I can fix this?
> 
> TIA
> 
> Jim McNeely
> --
> MySQL General Mailing List
> For list archives: http://lists.mysql.com/mysql
> To unsubscribe:    http://lists.mysql.com/mysql


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

Reply via email to