mysql кардинальности индекса столбца больше, чем уникальные значения в этом столбце - PullRequest
0 голосов
/ 14 октября 2018

Я использую MySQL 5.6.Существует таблица MYISAM с 1 миллионом строк.Столбец 'county' в этой таблице имеет индекс BTREE, а в столбце только 61 возможное значение.Когда я запускаю 'show index in TABLE' для этой таблицы, он сообщает, что количество элементов индекса для столбца 'county' равно 117554.

Я ожидаю, что количество элементов индекса столбца будет отражать числоуникальные значения в столбце.Числа в этом случае очень разные - указывает ли это на какую-то проблему, например на поврежденный индекс?

Я запустил «таблицу оптимизации», и это не изменило количество элементов этого индекса.

1 Ответ

0 голосов
/ 14 октября 2018

Документация MySql по индексам гласит:

Количество элементов

оценка количества уникальных значений в индексе.Чтобы обновить это число, запустите ANALYZE TABLE или (для таблиц MyISAM) myisamchk -a.

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

Акцент сделан на моём выделении.Многое касается вычисления количества элементов в индексе, включая доступность памяти сервера и дисковое пространство.

Я бы не стал обращать внимание на неверность вычисления количества элементов, особенно если вы уже выполнили команду optimize table.Вместо этого убедитесь, что ваши запросы используют индекс, выполнив планы объяснения для ваших запросов.

...