Что такое составная индексация и как ее правильно использовать?
У меня очень медленный запрос, который повторяется совсем немного. Я пытался индексировать отдельные поля, но это не помогает. Загрузка ЦП все еще очень высока, и запросы по-прежнему отображаются в журнале медленных запросов. Кажется, мне нужен составной индекс?
Как правильно индексировать следующий запрос?
select *
from `to_attachments` left join
`attachments`
on `to_attachments`.`attachment_id` = `attachments`.`id`
where `to_attachments`.`object_type` = 'communicator' and `to_attachments`.`object_id` = '64328'
order by `attachments`.`created_at` desc;
ОБЪЯСНИТЬ Результат:
1 SIMPLE to_attachments index NULL PRIMARY 775 NULL 244384 Using where; Using index; Using temporary; Using filesort
1 SIMPLE attachments eq_ref PRIMARY PRIMARY 4 quote.to_attachments.attachment_id 1 NULL
2 ответа
Вы хотите индексы на to_attachments(object_type, object_id, attachment_id)
а также attachments(id)
,
Ваша последовательность индекса неправильная, она должна быть (object_type, object_id, attachment_id). В многоколоночном индексе порядок столбцов в индексе имеет значение MATTER.