2

我想知道为什么以下查询在我解释它时不使用索引。

EXPLAIN SELECT 
  `t`.`id`, `t`.`omschrijving_kort`, `t`.`oplos_tijd_issue` 
FROM `incident` `t` 
LEFT OUTER JOIN `plaats` `plaatsen` ON (`plaatsen`.`incident_id`=`t`.`id`)  
WHERE 
  t.type='2' AND t.status='1'
GROUP BY t.id 
ORDER BY `t`.`oplos_tijd_issue` 

我的桌子:

CREATE TABLE `incident` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `omschrijving_kort` varchar(40) NOT NULL,
  `sla_type` tinyint(1) unsigned NOT NULL,
  `prioriteit` tinyint(1) unsigned NOT NULL,
  `laatste_wijziging` timestamp NULL default NULL,
  `aanmaak_tijd` timestamp NULL default NULL,
  `start_tijd_issue` timestamp NULL default NULL,
  `oplos_tijd_issue` timestamp NULL default NULL,
  `impact` int(11) unsigned default NULL,
  `template_id` int(10) unsigned default NULL,
  `type` tinyint(1) unsigned NOT NULL default '1',
  `subtype` tinyint(1) NOT NULL default '1',
  `status` tinyint(1) unsigned NOT NULL default '1',
  `regio_id` smallint(5) unsigned default NULL,
  PRIMARY KEY  (`id`),
  KEY `FK_template` (`template_id`),
  KEY `start_tijd_issue` (`start_tijd_issue`),
  KEY `id_startTijdIssue` (`id`,`start_tijd_issue`),
  KEY `id_oplosTijdIssue` (`id`,`oplos_tijd_issue`),
  KEY `id_subtype_status` (`id`,`subtype`,`status`),
  KEY `id` (`id`,`afsluiting_tijd`),
  KEY `id_2` (`id`,`oplos_tijd_issue`,`status`),
  KEY `FK_regios` (`regio_id`),
  KEY `id_3` (`id`,`status`),
  KEY `id_4` (`id`,`start_tijd_issue`,`oplos_tijd_issue`,`type`,`status`),
  KEY `id_5` (`id`,`prioriteit`),
  KEY `id_6` (`id`,`type`,`status`,`regio_id`),
  KEY `id_7` (`id`,`oplos_tijd_issue`,`type`,`status`,`regio_id`),
  KEY `id_8` (`id`,`regio_id`),
  KEY `oplos_tijd_issue_2` (`oplos_tijd_issue`,`type`,`status`),
  KEY `id_9` (`oplos_tijd_issue`,`type`,`status`,`id`),
  KEY `id_10` (`id`,`type`,`status`),
  KEY `type` (`type`,`status`,`id`,`oplos_tijd_issue`),
  KEY `oplos_tijd_issue` (`type`,`status`,`oplos_tijd_issue`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

我已经尝试向我的表中添加索引.. 可能太多了!

从我查找的内容来看,一个索引(type, status, oplos_tijd_issue)应该就足够了吗?

EXPLAIN告诉我:

possible keys: type, oplos_tijd_issue  
key: type  
ref: const, const  
Extra: Using where; Using temporary; Using filesort  
4

1 回答 1

0

我怀疑问题是类型转换问题。这会混淆 MySQL 和索引。尝试这个:

EXPLAIN SELECT 
  `t`.`id`, `t`.`omschrijving_kort`, `t`.`oplos_tijd_issue` 
FROM `incident` `t` 
LEFT OUTER JOIN `plaats` `plaatsen` ON (`plaatsen`.`incident_id`=`t`.`id`)  
WHERE 
  t.type=2 AND t.status=1
GROUP BY t.id 
ORDER BY `t`.`oplos_tijd_issue`

如果可以,请注意将数字类型与字符类型分开。

于 2013-01-15T15:59:04.163 回答