Низкий показатель 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 обновить эту статистику.

Другие вопросы по тегам