PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Operações bit a bit no Postgres


Use pode usar índices parciais para contornar o fato de que "&" não é um operador indexável (afaik):
CREATE INDEX vendors_typeA ON vendors(id) WHERE (type & 2) > 0;
CREATE INDEX vendors_typeB ON vendors(id) WHERE (type & 4) > 0;

Obviamente, você precisará adicionar um novo índice sempre que adicionar um novo tipo. Qual é uma das razões para expandir os dados em uma tabela de associação que pode ser indexada corretamente. Você sempre pode escrever gatilhos para manter uma tabela de máscara de bits adicionalmente, mas use a tabela muitos para muitos para manter os dados normalmente, pois será muito mais claro.

Se toda a sua avaliação de dimensionamento e desempenho for dizer "Eu posso ter milhões de linhas", você não fez o suficiente para começar a buscar esse tipo de otimização. Crie primeiro um modelo claro e bem estruturado, otimize-o depois com base em estatísticas reais sobre seu desempenho.