Поместить индексы на таблицу с большим количеством BOOL/TINYINT?

Старый наставник однажды сказал мне помещать индексы на большинство вещей, Вы используете a WHERE пункт для.

Если я поставил индекс BOOL/TINYINT? Существует существенное количество их в таблице, я работаю с и часто заканчиваюсь, фильтрованы где угодно от 1-20 из этих булевых условий.

6
задан Mohamed Ikal Al-Jabir 13 June 2010 в 23:03
поделиться

4 ответа

Есть одна ситуация, в которой может быть полезен индекс в логическом поле (или другом поле с низкой мощностью). Если одно из значений относительно мало (например, 10 ИСТИННЫХ значений из миллиона) и вы достаточно часто ищете эти несколько значений, то будет полезен индекс.

13
ответ дан 8 December 2019 в 14:40
поделиться

Вы можете проиндексировать комбинацию полей.

Индексирование на Bool1 может быть бессмысленным, потому что здесь всего 2 значения. Индексирование на Bool1, Bool2, Bool3, Bool4, Bool5 ... Bool16 имеет 2 ^ 16 значений.

1
ответ дан 8 December 2019 в 14:40
поделиться

Я не могу говорить о крошечных int (они вполне могут быть одинаковыми), но я бы не стал индексировать логические значения по той простой причине, что они могут принимать только два значения.

Насколько я помню, вы хотите использовать индексы для столбцов с высокой мощностью. Какой смысл иметь индекс для столбца, который может принимать только два разных значения? Это пустая трата места без реальной выгоды.

Я также рекомендую Какие лучшие практики и «практические правила» для создания индексов базы данных? для дальнейшего чтения.

Как уже отмечалось, вы можете рассмотреть возможность включения индекса в набор условий; какие из них зависят от вашего запроса.

1
ответ дан 8 December 2019 в 14:40
поделиться

Обычно вы не хотите индексировать по крайней мере логическое значение. Однако создание частичного индекса поверх чего-либо с логической проверкой в ​​качестве предиката может быть одним из наиболее эффективных доступных вариантов индексации - если ваше логическое поле вырезает много данных из индекса. Часто это намного эффективнее, чем создание комбинированного индекса с другим столбцом.

1
ответ дан 8 December 2019 в 14:40
поделиться
Другие вопросы по тегам:

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