Может ли MySQL использовать индекс в RANGE QUERY с ORDER BY?

У меня есть таблица MySQL:

CREATE TABLE mytable (
     id INT NOT NULL AUTO_INCREMENT,
     other_id INT NOT NULL,
     expiration_datetime DATETIME,
     score INT,
     PRIMARY KEY (id)
) 

Мне нужно выполнить запрос в форме:

SELECT * FROM mytable
WHERE other_id=1 AND expiration_datetime > NOW() 
ORDER BY score LIMIT 10

Если я добавлю этот индекс в mytable:

CREATE INDEX order_by_index
ON mytable ( other_id, expiration_datetime, score);

Сможет ли MySQL использовать весь order_by_index в приведенном выше запросе?

Похоже, это должно быть возможно, но согласно документации MySQL : « Индекс также можно использовать, даже если ORDER BY не соответствует индексу в точности, если все неиспользуемые части индекса и все дополнительные столбцы ORDER BY являются константами в предложении WHERE. "

Вышеупомянутый отрывок, кажется, предполагает, что индекс будет использоваться только в постоянном запросе, а мой - в запросе диапазона.

Кто-нибудь может уточнить, будет ли в этом случае использоваться индекс? Если нет, то каким образом я могу принудительно использовать индекс?

Спасибо.

9
задан Continuation 3 November 2010 в 02:05
поделиться