MySQL - Как я должен индексировать эту таблицу? - PullRequest
0 голосов
/ 28 декабря 2018

У меня есть таблица, в которой хранится библиотека ТВ-шоу пользователя, и я хотел бы улучшить ее

Таблица содержит следующие столбцы:

  • USER_ID
  • SHOW_ID
  • STATUS
  • PROGRESS |Последний просмотренный эпизод
  • IS_FAVORITE
  • RATING

У меня есть следующий индекс:

  • USER_ID & SHOW_ID |Основной
  • USER_ID |Необходим для внешнего ключа
  • SHOW_ID |Необходим для внешнего ключа
  • USER_ID & STATUS
  • USER_ID & IS_FAVORITE
  • SHOW_ID & STATUS
  • SHOW_ID & IS_FAVORITE

Iоколо 20M строк, вес данных около 750MB, вес индекса около 2GB в общей сложности около 2,75GB Я думаю, что индексов слишком много, но, возможно, они действительно необходимы для повышения производительности, если я оставлю это так, или я должен удалить последние 4индексы и почему?

1 Ответ

0 голосов
/ 28 декабря 2018

Размер ваших индексов кажется довольно большим по сравнению с данными.

Однако ответ на ваш вопрос во многом зависит от запросов, которые вы выполняете к этой таблице.Вы должны знать свои запросы, чтобы вы могли анализировать их один за другим: если вы найдете индекс, который не использует ни один из запросов, отбросьте его.

Если вы не знаете свои запросы и выполняете ихMySQL 5.6 или выше, вы можете использовать PERFORMANCE_SCHEMA для доступа к статистике ввода-вывода индексов (с момента последнего перезапуска базы данных).Это может использоваться для обнаружения неиспользуемых индексов, например:

SELECT 
    object_schema,
    object_name,
    index_name
FROM 
    performance_schema.table_io_waits_summary_by_index_usage 
WHERE
    index_name IS NOT NULL
   AND count_star = 0
ORDER BY object_schema, object_name;

См. это обсуждение для получения дополнительной информации.Однако будьте осторожны при использовании этого метода: у вас может быть ежемесячный или ежеквартальный запрос, основанный на индексе чудака, который может не отображаться при краткосрочном анализе.

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