piton
Новичок
нужно ли использовать двойной индекс?
На сайте используется единая система для рейтинга статей, файлов и т.п., вот структура
service_id - тип сущности
item_id - id сущности
user_vote - количество балов
и юзаются такие запросы:
1) SELECT user_vote FROM services_rating WHERE service_id='1' && item_id='777' && user_id='22222'; - чтобы понять голосовал или нет пользователь
вывод explain для верхнего запроса:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
2) SELECT SUM(user_vote) FROM `services_rating` WHERE `service_id`='1' AND `item_id`='777'; - чтобы вывести итого
UNIQUE юзается, чтобы исключить двойной учет голосов.
Не будет ли лучше сделать индекс по service_id, item_id и user_id и отдельный по service_id, item_id ?
Просто в системе полмиллиона записей и в mysql-slow стали появляться
-~{}~ 01.01.08 22:13:
до кучи, не лучше ли добавить дополнительный индекс по полю service_id, item_id и в запросах N2 юзать USE KEY ?
На сайте используется единая система для рейтинга статей, файлов и т.п., вот структура
PHP:
CREATE TABLE `services_rating` (
`id` int(11) NOT NULL auto_increment,
`date` int(11) NOT NULL default '0',
`service_id` smallint(6) NOT NULL default '0',
`item_id` int(11) NOT NULL default '0',
`user_id` int(11) NOT NULL default '0',
`user_vote` smallint(6) NOT NULL default '0',
PRIMARY KEY (`id`),
UNIQUE KEY `service_id` (`service_id`,`item_id`,`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
item_id - id сущности
user_vote - количество балов
и юзаются такие запросы:
1) SELECT user_vote FROM services_rating WHERE service_id='1' && item_id='777' && user_id='22222'; - чтобы понять голосовал или нет пользователь
вывод explain для верхнего запроса:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
2) SELECT SUM(user_vote) FROM `services_rating` WHERE `service_id`='1' AND `item_id`='777'; - чтобы вывести итого
UNIQUE юзается, чтобы исключить двойной учет голосов.
Не будет ли лучше сделать индекс по service_id, item_id и user_id и отдельный по service_id, item_id ?
Просто в системе полмиллиона записей и в mysql-slow стали появляться
-~{}~ 01.01.08 22:13:
до кучи, не лучше ли добавить дополнительный индекс по полю service_id, item_id и в запросах N2 юзать USE KEY ?