оптимизация WHERE + GROUP BY

berkut

Новичок
оптимизация WHERE + GROUP BY

приветствую! Подскажите, как оптимизировать запрос:
Код:
SELECT partner_id, SUM(warning)
FROM `stat`
WHERE partner_id IN (1, 2, 3, 4, 5)
GROUP BY partner_id
таблица:
Код:
CREATE TABLE `stat` (
  `id` int(11) unsigned NOT NULL auto_increment,
  `partner_id` int(11) unsigned NOT NULL default '0',
  `day_num` tinyint(3) unsigned NOT NULL default '0',
  `time` int(11) unsigned NOT NULL default '0',
  `average` float(5,2) unsigned NOT NULL default '0.00',
  `today` int(11) unsigned NOT NULL default '0',
  `sum` float(6,3) unsigned NOT NULL default '0.000',
  `warning` tinyint(1) unsigned NOT NULL default '0',
  PRIMARY KEY  (`id`),
  KEY `partner_id` (`partner_id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251
Explain выдаёт:
Код:
["id"]=>
    string(1) "1"
    ["select_type"]=>
    string(6) "SIMPLE"
    ["table"]=>
    string(14) "stat"
    ["type"]=>
    string(3) "ALL"
    ["possible_keys"]=>
    string(10) "partner_id"
    ["key"]=>
    NULL
    ["key_len"]=>
    NULL
    ["ref"]=>
    NULL
    ["rows"]=>
    string(1) "2"
    ["Extra"]=>
    string(44) "Using where; Using temporary; Using filesort"
В реальной таблице около 500000 записей, тормозит жутко. Не понимаю, почему не использует KEY `partner_id` (`partner_id`), хотя WHERE и GROUP BY идут по этому полю. Не помогает USE INDEX
 

Wicked

Новичок
действительно странно...

["rows"]=>
string(1) "2"

это для тестовой таблицы он перебирает 2 столбца?

1) попробуй FORCE INDEX ?
2) попробуй добавить двойной индекс index2 (partner_id, warning) ?
3) попробуй добавить ORDER BY NULL
 
Сверху