Положить индексы на стол с большим количеством BOOL / TINYINT? - PullRequest
6 голосов
/ 14 июня 2010

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

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

Ответы [ 4 ]

13 голосов
/ 14 июня 2010

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

1 голос
/ 14 июня 2010

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

1 голос
/ 14 июня 2010

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

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

1 голос
/ 14 июня 2010

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

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

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

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

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