Что такое составная индексация и как ее правильно использовать? - PullRequest
0 голосов
/ 03 октября 2018

У меня очень медленный запрос, который повторяется совсем немного.Я пытался индексировать отдельные поля, но это не помогает.Загрузка ЦП все еще очень высока, и запросы по-прежнему отображаются в журнале медленных запросов.Кажется, мне нужен составной индекс?

Как правильно индексировать следующий запрос?

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

Индекс для to_attachments enter image description here

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Ваша последовательность индекса неправильная, она должна быть (object_type, object_id, attachment_id).В многоколоночном индексе порядок столбцов в индексе имеет значение MATTER.

0 голосов
/ 03 октября 2018

Вы хотите индексы для to_attachments(object_type, object_id, attachment_id) и attachments(id).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...