2013-08-15 1 views
1

поэтому у меня есть таблица с индексом на колонке картынизкий 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

CARDINALITY

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

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

Смежные вопросы