Как индексировать двоичный столбец в MySQL, или я должен разделить на две таблицы? - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь проиндексировать двоичный столбец.Это может быть либо 1 (что для 3 миллионов строк), либо 0 (что обычно для ~ 100 строк).

Используя объяснение MySQL, кажется, что он полностью игнорирует созданный мной индекс, дажеесли я использую USE INDEX в своем запросе.

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

Я вижу, что одним из решений будет разделение данных на две таблицы, и это будет иметь смысл в зависимости от требований бизнеса.

Есть еще варианты?

Спасибо!

1 Ответ

0 голосов
/ 30 сентября 2018

Когда значение равно 1 (общее значение), оно игнорирует индекс и просто просматривает таблицу, подбрасывая несколько неприменимых строк.

Когда значение равно 0 (значениеочень редкое значение), индекс будет использоваться, и будет очень эффективным.Однако это может применяться только тогда, когда вы явно говорите WHERE col = 0.

Не видя SHOW CREATE TABLE и SELECT, трудно догадаться, какие другие оптимизации могут быть полезны.Тот, который приходит на ум: составной индекс , начинающийся с с этого столбца.

Также трудно судить, поможет ли разбиение на две таблицы.Вам иногда нужно было бы собрать их вместе?Если расщепление очищает код, то хорошо.Обратите внимание, что некоторые другие столбцы могут исчезнуть в одной или другой таблице.

Разделение редко помогает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...