NetScripter
Новичок
Спецам по оптимизации запросов вопрос
Всем привет.
Бьюсь над проблемой: выборка по индексу из таблицы размером 60 MB, 320,000 записей, занимет 1-2 секунды, что по моему мнению(и требованию с программной т. зрения) очень много.
Вот структура:
CREATE TABLE `cp_data` (
`id` int(11) NOT NULL auto_increment,
`times` timestamp NULL default CURRENT_TIMESTAMP,
`url` varchar(255) default NULL,
`referer` varchar(255) default NULL,
`ip` varchar(22) default NULL,
`visitor` varchar(255) default NULL,
`proj_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `ip` (`ip`),
KEY `times` (`times`),
KEY `proj_id` (`proj_id`),
KEY `visitor` (`visitor`),
KEY `fulli` (`times`,`proj_id`,`visitor`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 PACK_KEYS=0 AUTO_INCREMENT=325593 ;
Запрос следующего вида:
SELECT *, WEEK(times) dow FROM cp_data WHERE visitor=1989 AND proj_id=4 AND times <= DATE_ADD(NOW(), INTERVAL -1 DAY)+0 AND times >= DATE_ADD(NOW(), INTERVAL -93 DAY)+0 GROUP BY dow
explain выдает possible_keys: times,proj_id,visitor,fulli
key: proj_id
Почему из возможных 4 ключей использует только один? Мне думается в этом причина тормозов.
Заранее благодарю
Всем привет.
Бьюсь над проблемой: выборка по индексу из таблицы размером 60 MB, 320,000 записей, занимет 1-2 секунды, что по моему мнению(и требованию с программной т. зрения) очень много.
Вот структура:
CREATE TABLE `cp_data` (
`id` int(11) NOT NULL auto_increment,
`times` timestamp NULL default CURRENT_TIMESTAMP,
`url` varchar(255) default NULL,
`referer` varchar(255) default NULL,
`ip` varchar(22) default NULL,
`visitor` varchar(255) default NULL,
`proj_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `ip` (`ip`),
KEY `times` (`times`),
KEY `proj_id` (`proj_id`),
KEY `visitor` (`visitor`),
KEY `fulli` (`times`,`proj_id`,`visitor`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 PACK_KEYS=0 AUTO_INCREMENT=325593 ;
Запрос следующего вида:
SELECT *, WEEK(times) dow FROM cp_data WHERE visitor=1989 AND proj_id=4 AND times <= DATE_ADD(NOW(), INTERVAL -1 DAY)+0 AND times >= DATE_ADD(NOW(), INTERVAL -93 DAY)+0 GROUP BY dow
explain выдает possible_keys: times,proj_id,visitor,fulli
key: proj_id
Почему из возможных 4 ключей использует только один? Мне думается в этом причина тормозов.
Заранее благодарю