Rick, This is incredibly useful, thanks for taking the time to share with me. I am really learning stuff here!
Thanks, Jim On Nov 14, 2012, at 5:12 PM, Rick James wrote: > A PRIMARY KEY is a KEY, so the second of these is redundant: >> PRIMARY KEY (`zzk`), >> KEY `zzk` (`zzk`), > > "Compound" indexes are your friend. Learn from > http://mysql.rjweb.org/doc.php/index1 > >> `zzr_StatusTime` mediumtext, >> `zzr_StatusDate` mediumtext, > Don't need 16MB for a date or time. > Combining the fields is usually a better idea. > > VARCHAR(255), and especially TEXT/MEDIUMTEXT, can hurt performance when temp > tables needed in a query -- use something sensible. >> `NameLastFirstMI` varchar(255) DEFAULT NULL, > 1 letter? Occupying up to 767 bytes (255 utf8 chars)! > > InnoDB is generally faster than MyISAM. > >> KEY `isdigitized` (`IsDigitized`), > Rarely is a 'flag' (yes/no) value worth indexing. >> `is_deleted` int(11) DEFAULT NULL, > If it is just a 0/1 flag, then consider TINYINT UNSIGNED NOT NULL -- it will > shrink the space for that field significantly. > >> `Q01_answer` text, >> `Q01_title` text, >> `Q02_answer` text, >> `Q02_title` text, > Generally better to have another table for "arrays"; in this case it might > have 4 columns: > Appt_zzk, question_number, answer, title. > and multiple rows for each Appt. > >> ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='InnoDB free: 4068352 kB' > Sounds confused about the engine?? > > Most fields are NULLable. Not a serious issue, but not good practice. > > As you add > INDEX(ProcModeCode, dateexam) > you can DROP this as being redundant: > KEY `ProcModeCode` (`ProcModeCode`) > > The quick fix is to try the index suggested. It should change from >> 1 SIMPLE e index dateexam,IdAppt,ProcModeCode PRIMARY 4 >> NULL 1121043 "Using where" > Note the huge estimated number of rows. That should decline significantly. > > What's the value of key_buffer_size? It should generally be 20% of > _available_ RAM (for MyISAM usage). > >> -----Original Message----- >> From: James W. McNeely [mailto:jmcne...@nwrads.com] >> Sent: Wednesday, November 14, 2012 3:48 PM >> To: mysql@lists.mysql.com >> Subject: Re: query tuning >> >> Rick, >> >> Thanks! Here is the create table info. Sorry for the size, but you can skip >> down from all the fields to see the indexes. >> >> CREATE TABLE `exams` ( >> `zAddDate` date DEFAULT NULL, >> `zModDate` date DEFAULT NULL, >> `IdPatient` varchar(32) DEFAULT NULL, >> `zModBy` varchar(255) DEFAULT NULL, >> `Notes` mediumtext, >> `TechComments` mediumtext, >> `NameLastFirstMI` varchar(255) DEFAULT NULL, >> `IdExam` varchar(32) DEFAULT NULL, >> `IdAppt` varchar(255) DEFAULT NULL, >> `IdProcedure` varchar(255) DEFAULT NULL, >> `ProcName` mediumtext, >> `zzr_StatusBy` mediumtext, >> `zzr_StatusTime` mediumtext, >> `zzr_StatusDate` mediumtext, >> `zAddBy` varchar(255) DEFAULT NULL, >> `zMasterUserTest` varchar(255) DEFAULT NULL, >> `ProcAreaCode` mediumtext, >> `ClinicalICD9_1` mediumtext, >> `ICD9Text` mediumtext, >> `FilmsStandard` mediumtext, >> `FilmsAlternate` mediumtext, >> `OutsideSource` mediumtext, >> `ProcCode` mediumtext, >> `ClinicalText` mediumtext, >> `OutsideStatus` mediumtext, >> `OutsideDate` varchar(255) DEFAULT NULL, >> `ProcModeCode` varchar(16) DEFAULT NULL, >> `DateOfBirth` varchar(255) DEFAULT NULL, >> `PathDiagnosis` mediumtext, >> `PathSize` mediumtext, >> `PathBiopsy` mediumtext, >> `PathBiopsyDate` varchar(255) DEFAULT NULL, >> `ClinicalICD9_2` mediumtext, >> `ClinicalICD9_3` mediumtext, >> `RefPractInstructions` mediumtext, >> `_External` mediumtext, >> `FindCode` mediumtext, >> `NWRaccession` varchar(255) DEFAULT NULL, >> `Gender` varchar(255) DEFAULT NULL, >> `IdOverReadFacility` varchar(255) DEFAULT NULL, >> `ProcDorS` mediumtext, >> `CompareToDate` varchar(255) DEFAULT NULL, >> `IdRefSite` varchar(255) DEFAULT NULL, >> `IsBillable` varchar(255) DEFAULT NULL, >> `LastWordProcRt` mediumtext, >> `IdPerformedBy` varchar(255) DEFAULT NULL, >> `ContrastRiskFactors` mediumtext, >> `TimeToCompletion` varchar(255) DEFAULT NULL, >> `ContrastDose` mediumtext, >> `OutsideSourceOther` mediumtext, >> `SiteSide` mediumtext, >> `SiteLocation` mediumtext, >> `OverReadExamNumber` varchar(255) DEFAULT NULL, >> `IsOverRead` varchar(255) DEFAULT NULL, >> `OverReadCharge` varchar(255) DEFAULT NULL, >> `IsBillIns` varchar(255) DEFAULT NULL, >> `LastWordProcLt` mediumtext, >> `IsRLB` varchar(255) DEFAULT NULL, >> `IsBCHP` varchar(255) DEFAULT NULL, >> `IsNWRCoordUSOverride` varchar(255) DEFAULT NULL, >> `IsTechOnly` varchar(255) DEFAULT NULL, >> `IsProcNotComplete` varchar(255) DEFAULT NULL, >> `IsWaiverSigned` varchar(255) DEFAULT NULL, >> `IdInsur1` varchar(255) DEFAULT NULL, >> `IdInsur2` varchar(255) DEFAULT NULL, >> `IsNoInsurance` varchar(255) DEFAULT NULL, >> `IsPrintBillInfo` varchar(255) DEFAULT NULL, >> `OverReadChargePrinted` varchar(255) DEFAULT NULL, >> `RefSiteOther` varchar(255) DEFAULT NULL, >> `IsOverReadBillIns Copy` varchar(255) DEFAULT NULL, >> `ExamRoom` varchar(255) DEFAULT NULL, >> `IdProtocol` varchar(255) DEFAULT NULL, >> `IsTransDelayed` varchar(255) DEFAULT NULL, >> `Patient Shielded` varchar(255) DEFAULT NULL, >> `Patient Permitted` varchar(255) DEFAULT NULL, >> `LMP Status` varchar(255) DEFAULT NULL, >> `Flouro Time` varchar(255) DEFAULT NULL, >> `IsWetread` varchar(255) DEFAULT NULL, >> `zFlag` varchar(255) DEFAULT NULL, >> `FindingFinal` mediumtext, >> `IdExamsPrior` mediumtext, >> `ExamDelayComment` mediumtext, >> `NotesBillingAppt` mediumtext, >> `ExportBatch` varchar(255) DEFAULT NULL, >> `AgeRange` varchar(255) DEFAULT NULL, >> `Exam Start` varchar(255) DEFAULT NULL, >> `Exam Finish` varchar(255) DEFAULT NULL, >> `IsNWRBillLeaseBack` varchar(255) DEFAULT NULL, >> `MRIExamIndicated` varchar(255) DEFAULT NULL, >> `MRIExamNegPos` varchar(255) DEFAULT NULL, >> `zContinueFlag` varchar(255) DEFAULT NULL, >> `IsLeaseBack` varchar(255) DEFAULT NULL, >> `ContrastConcentration` mediumtext, >> `NotesBillingExam` mediumtext, >> `LastWordAccNum` varchar(255) DEFAULT NULL, >> `LastWordExportDate` varchar(255) DEFAULT NULL, >> `LastWordAcctNum` varchar(255) DEFAULT NULL, >> `LastWordExportFlag` varchar(255) DEFAULT NULL, >> `LeaseBackOverageKey` varchar(255) DEFAULT NULL, >> `LastWordPrePost` varchar(255) DEFAULT NULL, >> `LastWordExportBatch` varchar(255) DEFAULT NULL, >> `IsFilmed` varchar(255) DEFAULT NULL, >> `zCreateTime` varchar(255) DEFAULT NULL, >> `zzr_OperICDPre` mediumtext, >> `zzr_OperICDPost` mediumtext, >> `ClinicalTextPostOp` mediumtext, >> `zzr_OperLocation` mediumtext, >> `OperTemp` varchar(255) DEFAULT NULL, >> `OperPulse` varchar(255) DEFAULT NULL, >> `OperBloodPressure` varchar(255) DEFAULT NULL, >> `OperAirSaturation` varchar(255) DEFAULT NULL, >> `zDateExamAnnual` varchar(255) DEFAULT NULL, >> `OperPainLevel` varchar(255) DEFAULT NULL, >> `zzr_OperSide` mediumtext, >> `Surgeon` varchar(255) DEFAULT NULL, >> `OperRespiration` varchar(255) DEFAULT NULL, >> `OperSeriesEnd` varchar(255) DEFAULT NULL, >> `OperSeriesNumber` varchar(255) DEFAULT NULL, >> `zModTimestamp` datetime DEFAULT NULL, >> `IdRelatedProcedure` varchar(255) DEFAULT NULL, >> `ExamFailed` varchar(255) DEFAULT NULL, >> `IdSurgeon` varchar(255) DEFAULT NULL, >> `IsDigitized` varchar(255) DEFAULT NULL, >> `CorrelatingExam` varchar(255) DEFAULT NULL, >> `IdRefSiteBilling` varchar(255) DEFAULT NULL, >> `IdDictation` varchar(255) DEFAULT NULL, >> `zzk_organization` varchar(255) DEFAULT NULL, >> `zzz_audit_trail` mediumtext, >> `recp_extension` varchar(255) DEFAULT NULL, >> `zzk` int(11) NOT NULL, >> `is_deleted` int(11) DEFAULT NULL, >> `IdReportFinal` varchar(16) DEFAULT NULL, >> `dateexam` date DEFAULT NULL, >> `Three_D_postprocess` mediumtext, >> `Three_D_IndStation` varchar(45) DEFAULT NULL, >> `statusnumber` int(11) DEFAULT NULL, >> `zzz_flag` varchar(16) DEFAULT NULL, >> `NotesBilling` mediumtext, >> `iduser_tech` varchar(50) DEFAULT NULL, >> PRIMARY KEY (`zzk`), >> KEY `zzk` (`zzk`), >> KEY `zModTimestamp` (`zModTimestamp`), >> KEY `IdPatient` (`IdPatient`), >> KEY `IdExam` (`IdExam`), >> KEY `IdReportFinal` (`IdReportFinal`), >> KEY `isdigitized` (`IsDigitized`), >> KEY `statusnumber` (`statusnumber`), >> KEY `LastwordAccNum` (`LastWordAccNum`), >> KEY `zzz_flag` (`zzz_flag`), >> KEY `dateexam` (`dateexam`), >> KEY `IdAppt` (`IdAppt`), >> KEY `ProcModeCode` (`ProcModeCode`) >> ) ENGINE=MyISAM DEFAULT CHARSET=utf8 >> >> >> CREATE TABLE `Appt_` ( >> `zAddDate` text, >> `zModDate` text, >> `IdPatient` varchar(32) DEFAULT NULL, >> `zModBy` text, >> `Notes` text, >> `IdAppt` varchar(32) DEFAULT NULL, >> `Room` text, >> `IdProcedure` text, >> `zzr_StatusBy` text, >> `zzr_StatusDate` text, >> `zzr_StatusTime` text, >> `zAddBy` text, >> `PriorSelect` text, >> `ApptProcCode` text, >> `ApptCaution` text, >> `ApptProcDorS` text, >> `ApptLenMin` text, >> `WorkArea` text, >> `ProcName` text, >> `IdApptStart` text, >> `ProcNameShort` text, >> `ApptCancelNote` text, >> `ApptLRB` text, >> `IdPriCarePhy` varchar(30) DEFAULT NULL, >> `IsWaitList` text, >> `ApptIsTempWaitList` text, >> `ApptDate` date DEFAULT NULL, >> `zModByCode` text, >> `ProcAreaModeCode` text, >> `IsAnnounced` text, >> `ApptTimeText` text, >> `ApptTimeOut` time DEFAULT NULL, >> `IdInsur1` text, >> `IdInsur2` text, >> `IsNoInsurance` text, >> `IdRefSite` text, >> `IsSendBack` text, >> `IsWetRead` text, >> `IdExamsPrior` text, >> `NotesBilling` text, >> `ApptClinicalHistory` text, >> `ApptChiefComplaint` text, >> `ApptCompareFilms` text, >> `ApptInsCompany` text, >> `ApptInsPreAuth` text, >> `ApptQ1` text, >> `ApptQ2` text, >> `ApptQ3` text, >> `ApptQ4` text, >> `ApptQ5` text, >> `ApptQ6` text, >> `ApptQ7` text, >> `ApptQ8` text, >> `ApptQPatientWeight` text, >> `ApptSchedBy` text, >> `ConfirmMode` text, >> `ApptSchedByUserId` text, >> `zzr_ApptCCIdAffil` text, >> `IsPriority` text, >> `IsWaiverSigned` text, >> `LastWordAccNum` text, >> `LastWordAcctNum` text, >> `LastWord` text, >> `IsTechOnly` text, >> `IdApptAssoc` text, >> `IdFacSite` text, >> `IdArea` varchar(8) DEFAULT NULL, >> `zModTime` time DEFAULT NULL, >> `zModTimestamp` datetime DEFAULT NULL, >> `zzr_ApptCCNWR#` text, >> `ApptLocation` text, >> `ApptSchedTech` text, >> `ApptQ9` text, >> `ApptCancelCode` text, >> `ApptArrivalTime` text, >> `StatusInProcessSelect` text, >> `IsRegence` text, >> `SiteName` text, >> `ProcGroup` text, >> `SchedTechName_lkp` text, >> `heartbeat_result` text, >> `zzd_shell_result` text, >> `zzk` int(11) NOT NULL, >> `is_deleted` int(11) DEFAULT NULL, >> `zzz_junk` text, >> `is_walkin_true` text, >> `zzz_audit_trail` mediumtext, >> `zadddate_calc` text, >> `id_patient_date` varchar(45) DEFAULT NULL, >> `area_note` text, >> `ApptTimeEnd` time DEFAULT NULL, >> `cancel_date` datetime DEFAULT NULL, >> `ICD9code` varchar(45) DEFAULT NULL, >> `ApptQheartEarBrain` varchar(45) DEFAULT NULL, >> `ApptQImplant` varchar(45) DEFAULT NULL, >> `ApptQMetal` varchar(45) DEFAULT NULL, >> `ApptQPostOp` varchar(45) DEFAULT NULL, >> `ApptQPostOp6wks` varchar(45) DEFAULT NULL, >> `ApptQClaustro` varchar(45) DEFAULT NULL, >> `ApptQIssuesStill` varchar(45) DEFAULT NULL, >> `ApptQLimitations` varchar(45) DEFAULT NULL, >> `ApptQ60older` varchar(45) DEFAULT NULL, >> `ApptQdiabetic` varchar(45) DEFAULT NULL, >> `ApptQNephRenal` varchar(45) DEFAULT NULL, >> `ApptQHypertension` varchar(45) DEFAULT NULL, >> `ApptQGFRcreatine` varchar(45) DEFAULT NULL, >> `ApptQContrastAllrgy` varchar(45) DEFAULT NULL, >> `ApptQglucophage` varchar(45) DEFAULT NULL, >> `ApptQPatientHeight` varchar(45) DEFAULT NULL, >> `ApptQSentDrLtr` varchar(45) DEFAULT NULL, >> `ApptQ65older` varchar(45) DEFAULT NULL, >> `ApptTime_normal` varchar(45) DEFAULT NULL, >> `ApptTimeRange` varchar(45) DEFAULT NULL, >> `zzk_affil` varchar(45) DEFAULT NULL, >> `zzk_modality` varchar(45) DEFAULT NULL, >> `zzk_referral` varchar(45) DEFAULT NULL, >> `zzk_resource` varchar(45) DEFAULT NULL, >> `zzk_worklist` varchar(45) DEFAULT NULL, >> `is_pre_double_regd` varchar(45) DEFAULT NULL, >> `IdPatientDate` varchar(45) DEFAULT NULL, >> `not_appt` int(11) DEFAULT NULL, >> `Q01_answer` text, >> `Q01_title` text, >> `Q02_answer` text, >> `Q02_title` text, >> `Q03_answer` text, >> `Q03_title` text, >> `Q04_answer` text, >> `Q04_title` text, >> `Q05_answer` text, >> `Q05_title` text, >> `Q06_answer` text, >> `Q06_title` text, >> `Q07_answer` text, >> `Q07_title` text, >> `Q08_answer` text, >> `Q08_title` text, >> `Q09_answer` text, >> `Q09_title` text, >> `Q10_answer` text, >> `Q10_title` text, >> `Q11_answer` text, >> `Q11_title` text, >> `Q12_answer` text, >> `Q12_title` text, >> `Q13_answer` text, >> `Q13_title` text, >> `Q14_answer` text, >> `Q14_title` text, >> `Q15_answer` text, >> `Q15_title` text, >> `Q16_answer` text, >> `Q16_title` text, >> `Q17_answer` text, >> `Q17_title` text, >> `Q18_answer` text, >> `Q18_title` text, >> `Q19_answer` text, >> `Q19_title` text, >> `Q20_answer` text, >> `Q20_title` text, >> `ApptQContrstAllrgy` text, >> `export` varchar(11) DEFAULT NULL, >> `Q21_answer` text, >> `Q22_answer` text, >> `Q23_answer` text, >> `Q24_answer` text, >> `Q25_answer` text, >> `Q26_answer` text, >> `Q27_answer` text, >> `Q28_answer` text, >> `Q29_answer` text, >> `Q30_answer` text, >> `Q21_title` text, >> `Q22_title` text, >> `Q23_title` text, >> `Q24_title` text, >> `Q25_title` text, >> `Q26_title` text, >> `Q27_title` text, >> `Q28_title` text, >> `Q29_title` text, >> `Q30_title` text, >> `statusnumber` int(11) DEFAULT NULL, >> `ranking` int(11) DEFAULT NULL, >> `no_show_letter_status` varchar(45) DEFAULT NULL, >> `id_sci_24` varchar(45) DEFAULT NULL, >> `IdAffil_primary` varchar(45) DEFAULT NULL, >> PRIMARY KEY (`zzk`), >> KEY `zzk` (`zzk`), >> KEY `zModTimestamp` (`zModTimestamp`), >> KEY `IdPatient` (`IdPatient`), >> KEY `IdAppt` (`IdAppt`), >> KEY `apptdate` (`ApptDate`), >> KEY `ApptTimeOut` (`ApptTimeOut`), >> KEY `IdPriCarePhy` (`IdPriCarePhy`), >> KEY `dont_import` (`not_appt`), >> KEY `IdArea` (`IdArea`), >> KEY `statusnumber` (`statusnumber`), >> KEY `no_show_letter` (`no_show_letter_status`) >> ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='InnoDB free: 4068352 kB' >> >> >> CREATE TABLE `Affil_` ( >> `IdAffiliation` varchar(16) DEFAULT NULL, >> `IdPract` varchar(16) DEFAULT NULL, >> `Backline` varchar(16) DEFAULT NULL, >> `BacklineAC` varchar(8) DEFAULT NULL, >> `NWRSpeedDial` varchar(32) DEFAULT NULL, >> `HospExt` varchar(16) DEFAULT NULL, >> `NWMBCon` varchar(32) DEFAULT NULL, >> `Email` varchar(128) DEFAULT NULL, >> `PhoneAC` varchar(8) DEFAULT NULL, >> `Phone` varchar(16) DEFAULT NULL, >> `FaxAC` varchar(8) DEFAULT NULL, >> `Fax` varchar(16) DEFAULT NULL, >> `NWR#` varchar(16) DEFAULT NULL, >> `PractName` varchar(64) DEFAULT NULL, >> `IdAffil` varchar(30) DEFAULT NULL, >> `NameLast` varchar(32) DEFAULT NULL, >> `NameFirst` varchar(32) DEFAULT NULL, >> `IdAffilImport` varchar(64) DEFAULT NULL, >> `IsInactiveX` varchar(8) DEFAULT NULL, >> `AddrSuite` varchar(128) DEFAULT NULL, >> `OfficeName` varchar(255) DEFAULT NULL, >> `short_name` varchar(255) DEFAULT NULL, >> `NameLastXFirst` varchar(255) DEFAULT NULL, >> `LocationCode` varchar(64) DEFAULT NULL, >> `PagerAC` varchar(8) DEFAULT NULL, >> `Pager` varchar(16) DEFAULT NULL, >> `AnsSrvcAC` varchar(8) DEFAULT NULL, >> `AnsSrvc` varchar(16) DEFAULT NULL, >> `MCAffil` varchar(32) DEFAULT NULL, >> `ReportPreference` varchar(32) DEFAULT NULL, >> `ReportPrinter` varchar(32) DEFAULT NULL, >> `ReportViaPACS` varchar(255) DEFAULT NULL, >> `DupeMark` varchar(8) DEFAULT NULL, >> `SJHPractName` varchar(128) DEFAULT NULL, >> `NWR#Inactive` varchar(128) DEFAULT NULL, >> `zModDate` date DEFAULT NULL, >> `zModTime` time DEFAULT NULL, >> `zModTimestamp` datetime DEFAULT NULL, >> `IdLastword` varchar(16) DEFAULT NULL, >> `zzk` int(11) NOT NULL, >> `is_deleted` int(11) DEFAULT NULL, >> `mysql_timestamp` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE >> CURRENT_TIMESTAMP, >> `contact_classification` varchar(45) DEFAULT NULL, >> PRIMARY KEY (`zzk`), >> KEY `zzk` (`zzk`), >> KEY `zModTimestamp` (`zModTimestamp`), >> KEY `IdAffil` (`IdAffil`), >> KEY `mysql_timestamp` (`mysql_timestamp`), >> KEY `IdPract` (`IdPract`) >> ) ENGINE=MyISAM DEFAULT CHARSET=utf8 >> >> >> On Nov 14, 2012, at 3:26 PM, Rick James wrote: >> >>> 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 >>> >> >> >> -- >> 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 > -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/mysql