mysql查询大约花了3秒钟 - 并且所有键都被索引了

时间:2014-08-19 14:12:11

标签: mysql sql

我在3个mysql表之间有一个简单的连接,分别有1613,369和500行。我相信我已将所有内容编入索引,但查询仍需要3秒或更长时间。我的疑问是:

SELECT
fe.pid, fe.encounter, s.Templates_ID
FROM 
(form_encounter fe
JOIN em__structure s ON fe.pc_catid=s.Templates_ID
JOIN em__assemblies a ON s.Massemblies_ID=a.Massemblies_ID)

当我对此进行说明时,我得到以下内容,抱歉格式为:

id  select_type table   type    possible_keys   key key_len ref rows    Extra
1   SIMPLE  a   index   Massemblies_ID      Massemblies_ID   4   NULL   651   Using index; Using temporary; Using filesort
1   SIMPLE  s   ref Templates_ID,Massemblies_ID Massemblies_ID   4   oaks_1410.a.Massemblies_ID   1
1   SIMPLE  fe  ref pc_catid    pc_catid,4,oaks_1410.s.Templates_ID   100   Using where

以下是我的3个表格,我试图将所有可用的线索用于解决这个问题:

CREATE TABLE `form_encounter` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`date` datetime DEFAULT NULL,
`reason` longtext,
`facility` longtext,
`facility_id` int(11) NOT NULL DEFAULT '0',
`pid` bigint(20) DEFAULT NULL,
`encounter` bigint(20) DEFAULT NULL,
`onset_date` datetime DEFAULT NULL,
`sensitivity` varchar(30) DEFAULT NULL,
`pc_catid` int(11) NOT NULL DEFAULT '5' COMMENT 'event category from openemr_postcalendar_categories',
`last_stmt_date` date DEFAULT NULL,
`stmt_count` int(11) NOT NULL DEFAULT '0',
`provider_id` int(11) DEFAULT '0' COMMENT 'default and main provider for this visit',
`supervisor_id` int(11) DEFAULT '0' COMMENT 'supervising provider, if any, for this visit',
`invoice_refno` varchar(31) NOT NULL DEFAULT '',
`referral_source` varchar(31) NOT NULL DEFAULT '',
`billing_facility` int(11) NOT NULL DEFAULT '0',
`billing_status` int(11) DEFAULT '10' COMMENT 'see form_encounter_status_codes',
`billing_due_date` date DEFAULT NULL COMMENT 'date an encounter becomes due',
`last_level_billed` int(11) NOT NULL DEFAULT '0' COMMENT '0=none, 1=ins1, 2=ins2, etc',
`last_level_closed` int(11) NOT NULL DEFAULT '0' COMMENT '0=none, 1=ins1, 2=ins2, etc',
`billing_note` text,
`workmans_comp` varchar(1) DEFAULT 'N',
`workmans_comp_claim_number` varchar(40) DEFAULT NULL COMMENT 'workmans comp claim number',
`prior_authorization_number` varchar(40) DEFAULT NULL COMMENT 'prior authorization number for workmans comp',
`auto_accident` varchar(1) DEFAULT 'N',
`auto_accident_state` varchar(2) DEFAULT NULL COMMENT 'auto accident state',
`other_accident` varchar(1) DEFAULT 'N',
`referral_provider_id` int(11) DEFAULT NULL,
`referral_provider_npi` varchar(10) DEFAULT NULL,
`signed_by` int(11) NOT NULL DEFAULT '0' COMMENT 'Provider who signed the encounter',
`pc_templateid` varchar(10) DEFAULT NULL COMMENT 'Physical exam template used for this encounter',
`pc_poptemplateid` int(10) unsigned DEFAULT NULL COMMENT 'Encounter template including data population',
`pc_poptemplatestatus` tinyint(1) unsigned DEFAULT NULL COMMENT 'Whether ecounter has been materially modified from template',
`deleted` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'flag indicates form has been deleted',
PRIMARY KEY (`id`),
UNIQUE KEY `pid_encounter_unique` (`pid`,`encounter`) USING BTREE,
KEY `pc_catid` (`pc_catid`)
) ENGINE=InnoDB AUTO_INCREMENT=1614 DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC

第二张表:

CREATE TABLE `em__structure` (
`ID` int(11) unsigned NOT NULL AUTO_INCREMENT,
`Templates_ID` int(11) unsigned DEFAULT NULL,
`Sections_ID` int(11) unsigned DEFAULT NULL,
`Idx` mediumint(4) unsigned DEFAULT '1',
`Massemblies_ID` int(5) unsigned NOT NULL DEFAULT '0',
`EditDate` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`ID`),
KEY `Templates_ID` (`Templates_ID`),
KEY `Sections_ID` (`Sections_ID`),
KEY `Massemblies_ID` (`Massemblies_ID`)
) ENGINE=InnoDB

第三张表:

CREATE TABLE `em__assemblies` (
`ID` int(11) unsigned NOT NULL AUTO_INCREMENT,
`Massemblies_ID` int(5) unsigned NOT NULL DEFAULT '0',
`Groupings_ID` int(11) unsigned DEFAULT NULL,
`Components_ID` int(11) unsigned DEFAULT NULL,
`Idx` mediumint(4) unsigned DEFAULT '1',
`Sex` char(1) DEFAULT NULL,
`Responsetypes_ID` int(11) DEFAULT NULL,
PRIMARY KEY (`ID`),
KEY `Groupings_ID` (`Groupings_ID`),
KEY `Components_ID` (`Components_ID`),
KEY `Responsetypes_ID` (`Responsetypes_ID`),
KEY `Massemblies_ID` (`Massemblies_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=505 DEFAULT CHARSET=latin1

连接都在索引整数键上。

0 个答案:

没有答案