низкая мощность индекса mysql, но данные разнообразны

так что у меня есть таблица с индексом на карточке столбца

Когда я бегу

SELECT COUNT(DISTINCT(card)) FROM table

он возвращает 490 различных записей

Однако когда я бегу

SHOW INDEXES FROM s_edge_type_group_join;

Он показывает, что количество элементов индексной карточки в столбце card равно 1. В этом индексе есть только этот столбец.

Почему это так? Почему количество элементов индекса не отражает разнообразие данных?


person pillarOfLight    schedule 15.08.2013    source источник


Ответы (1)


Количество элементов, возвращаемое SHOW INDEX, является оценкой, которая в основном используется оптимизатором для построения плана выполнения запроса:

http://dev.mysql.com/doc/refman/5.0/en/show-index.html

Мощность

Оценка количества уникальных значений в индексе. Это можно обновить, запустив ANALYZE TABLE или myisamchk -a. Количество элементов рассчитывается на основе статистики, хранящейся в виде целых чисел, поэтому значение не обязательно является точным даже для небольших таблиц. Чем выше мощность, тем больше вероятность того, что MySQL использует индекс при объединении.

В зависимости от способа заполнения таблицы эти значения могут быть устаревшими. И, перефразируя документ, в этом случае вы должны использовать ANALYZE TABLE < / a>, чтобы обновить эту статистику.

person Sylvain Leroux    schedule 15.08.2013