Не используется индекс в запросе?

Ret

Новичок
Не используется индекс в запросе?

День добрый, есть вот такой запрос:
select C.npl, C.nk, A.kmat, A.prizn, A.ves FROM ups.plav C, ups.dozan A WHERE C.datapl='20100930' and C.npl=A.npl
работал нормально, но выросло число записей в таблице ups.dozan и начало тормозить. Решил посмотреть explain, вот результат:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE A ALL npl null null null 665870
1 SIMPLE C eq_ref npl npl 3 ups.A.npl 1 Using where
1 SIMPLE B ref kmat kmat 1 ups.A.kmat 15

таблицы:
CREATE TABLE `plav` (
`npl` mediumint(8) unsigned NOT NULL default '0',
`datapl` date NOT NULL default '0000-00-00',
`nk` tinyint(4) NOT NULL default '0',
UNIQUE KEY `npl` (`npl`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

CREATE TABLE `dozan` (
`npl` mediumint(8) unsigned NOT NULL default '0',
`kmat` tinyint(3) unsigned NOT NULL default '0',
`prizn` tinyint(3) unsigned NOT NULL default '0',
`ves` mediumint(9) NOT NULL default '0',
KEY `npl` (`npl`),
KEY `kmat` (`kmat`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

Число записей будет продолжать расти, что можно сделать, посоветуйте?
 

Gas

может по одной?
не может использоваться несуществующий индекс, создай его на поле `datapl`
 

prolis

Новичок
Re: Не используется индекс в запросе?

Вот это смущает, использование индекса по неселективному полю, он вряд ли когда использовался бы в запросах, можете убить его:
Автор оригинала: Ret
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE B ref kmat kmat 1 ups.A.kmat 15
 

Ret

Новичок
не может использоваться несуществующий индекс, создай его на поле `datapl`
спасибо большое, протупил ...
Вот это смущает, использование индекса по неселективному полю, он вряд ли когда использовался бы в запросах, можете убить его:
я выложил часть запроса, в полном варианте по этому полю еще join идет, спасибо.
 
Сверху