Мне нужно добавить индексы к моей таблице (столбцам) и наткнуться на это сообщение:
Сколько индексов базы данных слишком много?
Цитата: "Сказав это, вы можете четко добавить множество бессмысленных индексов в таблицу, которые ничего не сделают. Добавление индексов B-Tree в столбец с двумя разными значениями будет бессмысленным, поскольку оно ничего не добавляет с точки зрения поиска данные вверх. Чем уникальнее значения в столбце, тем больше он будет выигрывать от индекса."
Является ли индекс действительно бессмысленным, если есть только два разных значения? Учитывая таблицу следующим образом (база данных MySQL, InnoDB)
Id (BIGINT)
fullname (VARCHAR)
address (VARCHAR)
status (VARCHAR)
Дополнительные условия:
- База данных содержит 300 миллионов записей
- Статус может быть "включен" и "отключен"
- 150 миллионов записей имеют статус = включено и 150 миллионов записей stauts = disabled
Насколько я понимаю, без индекса статуса, выбор с помощью where status=’enabled’
приведет к полному использованию таблиц с 300 миллионами записей для обработки?
Насколько эффективен поиск, когда я использую индекс BTREE для статуса?
Нужно ли индексировать этот столбец или нет?
Какие альтернативы (возможно, любые другие индексы) MySQL InnoDB обеспечивают эффективный просмотр записей с помощью "where status =" enabled "в данном примере с очень низкой мощностью/селективностью значений?