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