sql >> Base de Datos >  >> RDS >> PostgreSQL

Operaciones bit a bit en Postgres

El uso puede usar índices parciales para evitar el hecho de que "&" no es un operador indexable (afaik):

CREATE INDEX vendors_typeA ON vendors(id) WHERE (type & 2) > 0;
CREATE INDEX vendors_typeB ON vendors(id) WHERE (type & 4) > 0;

Por supuesto, deberá agregar un nuevo índice cada vez que agregue un nuevo tipo. Cuál es una de las razones para expandir los datos en una tabla de asociación que luego se puede indexar correctamente. Siempre puede escribir disparadores para mantener una tabla de máscara de bits adicionalmente, pero use la tabla muchos a muchos para mantener los datos normalmente, ya que será mucho más claro.

Si toda su evaluación de escalado y rendimiento es decir "Puede que tenga millones de filas", no ha hecho lo suficiente para comenzar a buscar este tipo de optimización. Cree primero un modelo claro bien estructurado y optimícelo después sobre la base de estadísticas reales sobre su rendimiento.