У меня есть запрос MySQL, который я хотел бы оптимизировать:
SELECT min(`topic_id`) FROM `gallery_topics` where `topic_id` > 11 AND `topic_poster` = 5 AND `topic_status` = 0
Я хотел добавить индекс с несколькими полями для оптимизации этого запроса, поэтому я добавил ключ, который я назвал previous_by_author, с этими тремя ключами в следующем порядке:
- topic_id
- topic_poster
- topic_status
Я сделал EXPLAIN этого запроса, ожидая, что запрос EXPLAIN скажет мне, что запрос использует мой новый индекс previous_by_author. Однако EXPLAIN сообщил, что в запросе используется индекс user_start_time, в котором используются следующие два поля: 1. topic_poster и 2. topic_start_time.
Я не понимаю, topic_start_time - это поле времени, которого нет даже в моем запросе!
Вот полный результат запроса EXPLAIN:
id select_type table type possible_keys
1 SIMPLE gallery_topics ref PRIMARY,user_start_time,previous_by_author
(rows continued)
key key_len ref rows Extra
user_start_time 8 const 4 Using where
Какие поля я должен использовать в своем индексе с несколькими полями, чтобы мой запрос мог использовать лучший индекс?