Назад | Перейти на главную страницу

По каким причинам индекс MySQL будет в 12 раз больше таблицы?

Итак, у нас есть таблица с двумя индексами: один для первичного ключа, а другой - для другого столбца таблицы. Размер индекса в настоящее время в 12 раз больше, чем размер самой таблицы. По каким причинам это могло произойти? Мы оптимизировали таблицу раньше, и это помогло, но она снова растет.

Спасибо!

Факторы, которые могут отрицательно повлиять на размер индекса

  • Распределение данных (т.е. единообразно или необъективно)
  • Порядок вставки / удаления / обновления данных (т.е. если он не случайный)
  • Для varchar размер и кодировка varchar
  • Для innodb использование излишне большого типа данных для первичного ключа повлияет на вклад каждого индекса, поскольку он неявно является его частью.

Как вы отметили, повторная запись индекса (т.е. оптимизация таблицы) может / снова сбалансирует структуру индекса.

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

Хотя большой индекс может показаться медленным по своей природе, он может (или должен) перемещаться довольно быстро из-за его высоко структурированной природы и, таким образом, дает указатели на правильные данные быстрее, чем исчерпывающий поиск самих данных.

Если предположить, что они по-прежнему умещаются на диске, настоящие тесты ваших индексов - это удовлетворительное время поиска, обновления и добавления, особенно с учетом масштабирования объема данных. Если эти аспекты остаются адекватными, большой индекс допустим.