Битовые индексы — мощный инструмент в Oracle, но работают не везде. В этом посте — просто и по делу: когда их использовать, а когда лучше обойти стороной. В отличие от классического B-tree индекса, который хранит ссылки на строки с конкретными значениями, битовый индекс использует битовые карты: для каждого уникального значения создаётся "битовая маска", где каждая строка таблицы — это позиция (бит). Один бит = одна строка. Такой подход суперэффективен, когда: Посмотрим на таблицу `demo_customers`. -- Таблица customers CREATE TABLE demo_customers ( customer_id NUMBER PRIMARY KEY, name VARCHAR2(100), region VARCHAR2(50), created_at DATE DEFAULT SYSDATE, created_by NUMBER, modified_at DATE, modified_by NUMBER, is_active CHAR(1) DEFAULT 'Y' CHECK (is_active IN ('Y', 'N')), deleted_at DATE, deleted_by NUMBER ); Есть поле `is_active`, которое может быть `'Y'` или `'N'`. Угадаете, сколько уникальных значений? Правильно — два. Создаем индекс: CREATE BITMAP INDEX idx_cust_is_active ON de