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

Будет ли быстро работать bitmap index?

Допустим в таблице есть поле unsigned int, в котором зашифрованы 32 бита, каждый из которых означает yes/no (набор некоторых условий, которые могут наступать одновременно).
Соответственно, чтобы выбрать набор значений с определенными фильтрами, выполняется запрос вида:
SELECT * FROM TABLE WHERE (column & 0b0101111) = 0b0101111; // Если нужно полное совпадение
SELECT * FROM TABLE WHERE (column & 0b0101111) <> 0; // Если достаточно хотя бы одного совпадения

В mysql есть только индекс BTREE, в данном запросе он не используется. В postgresql есть BITMAP индекс, и соответственно вопрос - подходит ли BITMAP индекс для такого рода запросов, будет ли он эффективен, и вдруг кто знает, будет ли поддержка такого индекса в mysql/mariadb в будущем?
  • Вопрос задан
  • 496 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Java-разработчик
    8 месяцев
    Далее
  • Shultais Education
    Основы SQL
    3 месяца
    Далее
  • OTUS
    PHP Developer. Professional
    5 месяцев
    Далее
Решения вопроса 1
@miksir
IT
Нет, bitmap индекс - это другое, отношение к битовым операциям не имеет
https://wiki.postgresql.org/wiki/Bitmap_Indexes
Если у вас ограниченное число таких условий, можно построить индексы по выражению (например, индекс по выражению column & 0b0101111).
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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