Việc sử dụng có thể sử dụng các chỉ số từng phần để giải quyết vấn đề rằng "&" không phải là toán tử có thể lập chỉ mục (afaik):
CREATE INDEX vendors_typeA ON vendors(id) WHERE (type & 2) > 0;
CREATE INDEX vendors_typeB ON vendors(id) WHERE (type & 4) > 0;
Tất nhiên, bạn sẽ cần thêm một chỉ mục mới mỗi khi bạn thêm một loại mới. Đó là một trong những lý do để mở rộng dữ liệu thành một bảng liên kết mà sau đó có thể được lập chỉ mục đúng cách. Bạn luôn có thể viết các trình kích hoạt để duy trì thêm một bảng mặt nạ bit, nhưng hãy sử dụng bảng nhiều-nhiều để thực sự duy trì dữ liệu một cách bình thường, vì nó sẽ rõ ràng hơn nhiều.
Nếu toàn bộ đánh giá về quy mô và hiệu suất của bạn là "Tôi có thể có hàng triệu hàng", thì bạn chưa làm đủ để bắt đầu thực hiện loại tối ưu hóa này. Trước tiên, hãy tạo một mô hình rõ ràng có cấu trúc phù hợp, tối ưu hóa nó sau trên cơ sở thống kê thực tế về cách nó hoạt động.