Mysql-запрос с порядком по индексу использования, но все равно дает «используя где»

0

Я столкнулся с проблемой со следующим запросом:

select * 
from testtable 
where user_id = 1 and color = 1 and size = 1 
order by created_at desc, id desc;

Я использовал два индекса

  • index1 (user_id, color, size)
  • index2 (created_at, id)

Но я получил "использование где, используя filesort" в результате объяснения

Затем я изменил индекс, чтобы использовать все пять столбцов

  • index1 (user_id... id)

И "использование filesort" ушел, но я все равно получаю "использование где",

Какие дальнейшие шаги я должен предпринять, чтобы полностью использовать индексы для этого запроса?

Изображение 174551

Изображение 174551

Спасибо

Теги:
explain
sql-execution-plan

2 ответа

0

Если вы специально не собираетесь извлекать или проверять все строки из таблицы, у вас может быть что-то не так в вашем запросе, если значение Extra не используется.

Из документов MySQL

Так что, другими словами, это абсолютно нормально и нормально.

  • 0
    Вы должны включить ссылку на авторство для цитируемого материала.
0

Первый индекс используется для того, where. Если вы также хотите использовать индекс для сортировки, вам нужен индекс (user_id, color, size, created_at, id).

  • 0
    В объяснении я исправил это, чтобы включить все столбцы, как в вашем примере, но я все еще получаю «используя где»

Ещё вопросы

Сообщество Overcoder
Наверх
Меню