Низкий показатель MySQL индекса, но данные разнообразны
Поэтому у меня есть таблица с индексом на столбце карты
Когда я бегу
SELECT COUNT(DISTINCT(card)) FROM table
возвращает 490 разных записей
Однако когда я бегу
SHOW INDEXES FROM s_edge_type_group_join;
Это свидетельствует о том, что количество элементов указателя на столбце card
только 1. Этот индекс имеет только этот столбец в нем
Почему это так? Почему мощность индекса не отражает разнообразие данных?
1 ответ
Количество элементов, возвращаемое SHOW INDEX
оценка, в основном используемая оптимизатором для построения плана выполнения запроса:
http://dev.mysql.com/doc/refman/5.0/en/show-index.html
мощность
Оценка количества уникальных значений в индексе. Это обновляется при запуске ANALYZE TABLE или myisamchk -a. Количество элементов рассчитывается на основе статистики, хранящейся в виде целых чисел, поэтому значение не обязательно является точным даже для небольших таблиц. Чем выше количество элементов, тем больше вероятность того, что MySQL использует индекс при выполнении объединений.
В зависимости от способа заполнения таблицы эти значения могут быть устаревшими. И, перефразируя документ, в этом случае вы должны использовать ANALYZE TABLE
обновить эту статистику.