Подтвердить что ты не робот

Является ли NULL мощность в индексе проблемой - MySQL 5.x

У меня возникают проблемы с производительностью в живой версии системы, которую я не могу воспроизвести локально.

Сравнивая несколько EXPLAIN-результатов с моими локальными копиями базы данных с живым, я отмечаю, что многополевые индексы не используются в некоторых местах на живом, но локально, а дальнейшее исследование показывает, что эти индексы имеют мощность NULL на концерте.

Я предполагаю, что это проблема, но что означает значение NULL, и приведет ли это к тому, что индекс не будет использоваться? Будет ли Оптимизатор исправлять это и есть ли способ предотвратить его повторение? У меня нет полного доступа к живой базе данных MySQL, поэтому анализ и оптимизация не соответствуют моим нормальным возможностям.

Большое спасибо за любые ответы!

4b9b3361

Ответ 1

Значение NULL в индексе таблицы MyISAM возникает, когда таблица создается (или усечена) и заполняется данными. ПОСЛЕ загрузки пользователь ДОЛЖЕН выполнить "Анализ таблицы x", чтобы эффективно увеличить мощность для этой таблицы. Аналогичная проблема существует в таблицах InnoDB, где "Анализ таблицы x" необходимо периодически выполнять, чтобы обеспечить оптимальную производительность индекса. Механизм базы данных MySQL НЕ автоматически обновляет мощность индекса, за исключением первичных ключей с одним столбцом.

Не-NULL-мощность является критической/обязательной для использования MySQL этим индексом.

Немного о мощности: это мера уникальности поля. Чем более уникальным (более высокое значение), тем эффективнее будет индекс в этом поле и будет затронуто меньшее количество записей. NULL-мощность не совпадает с мощностью 0 (ноль).
  Читайте это: ПОКАЗАТЬ УКАЗАТЕЛЬ

- JJ -

Ответ 2

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

Одним из многих функций InnoDB является автоматическое обслуживание индексов.