Задать вопрос
Twitt
@Twitt

Что такое Cardinality и зачем оно нужно?

Услышал, что в таблице слетело кардиналити, но так и не понял, что это такое и за что оно отвечает. Можно простыми словами объяснить, для чего это надо и какое влияние имеет для таблиц mysql, и как его починить, если оно слетело?
  • Вопрос задан
  • 19152 просмотра
Подписаться 2 Простой Комментировать
Решения вопроса 1
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Cardinality характеризует уникальность данных. Высокая кардинальность - уникальные данные, низкая кардинальность - повторяющиеся данные. Например, в таблице customers имеем колонки:
  • gender - высокоповторяющиеся данные, низкая кардинальность
  • city - данные повторяются, но уже не так часто - нормальная кардинальность
  • phone - данные уникальны, высокая кардинальность


Как кардинальность может слететь - впервые слышу. Это характеристика данных по их уникальности, а не индекс какой-нибудь. Она не слетает.

Впрочем, иногда под кардинальностью (скорее ошибочно) подразумевают кардинальные отношения между таблицами (1:1, 1:n, n:n). В данном случае тогда речь может идти о слетевших связях (foreign keys слетевшие в результате некорректного импорта с переопределением autoincrements).
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
https://ru.m.wikipedia.org/wiki/%D0%9C%D0%BE%D1%89...
Слететь не может. Может быть высоким (для уникальных значений) и низким (для дубликатов).
Ответ написан
Комментировать
@DinaN
Может имелась ввиду ситуация когда SHOW INDEX FROM ... возвращает для cardinality значение NULL?
Столкнулась с такой ситуацией на живой БД, после ANALYZE все выправилось.
Таблица была MyISAM.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы