Есть подобная таблица:
CREATE TABLE `test` (
`id` int(10) unsigned,
`price` int(10) NOT NULL,
`product_id` int(10),
KEY `IdxProductIdPrice` (`product_id`,`price`),
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Есть такой запрос:
SELECT `price`, `id`, `product_id`
FROM `test`
WHERE `product_id` = 1100
ORDER BY `price` ASC;
Explain возвращает:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE test ref IdxProductIdPrice IdxProductIdPrice 5 const 38000 Using where
Почему составной индекс используется не полностью?
Если перенести эти поля в WHERE часть, то key_len=9, если же перенести в ORDER BY, то вообще индексы не использует, хотя таблица на 1.5 млн записей.