У меня есть таблица 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. "
Вышеупомянутый отрывок, кажется, предполагает, что индекс будет использоваться только в постоянном запросе, а мой - в запросе диапазона.
Кто-нибудь может уточнить, будет ли в этом случае использоваться индекс? Если нет, то каким образом я могу принудительно использовать индекс?
Спасибо.