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

PostgreSQL - consulta no índice GIN do valor HSTORE


Sua tentativa inicial está correta, mas você precisa usar índices btree (parciais) e varreduras de índice de bitmap para confiar nele:
create index on product(((ext->'size')::int)) where ((ext->'size') is not null);

O mesmo para massa, e se o planejador não conseguir no local, adicione duas cláusulas where, ou seja, where ext->'size' is not null e o mesmo para a massa.

Se houver algum tipo de padrão (o que é provável, já que a maioria dos produtos com tamanho também tem massa), crie potencialmente um índice de várias colunas combinando os dois - um saco, o outro desc.

O índice gin como você o escreveu, junto com a consulta que o acompanha (com um erro de sintaxe) basicamente fará a mesma coisa, mas não ordenada; será mais lento.