PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL:query sull'indice GIN del valore HSTORE

Il tuo tentativo iniziale è corretto, ma devi utilizzare gli indici btree (parziali) e le scansioni degli indici bitmap per fare affidamento su di esso:

create index on product(((ext->'size')::int)) where ((ext->'size') is not null);

Lo stesso per la massa, e se il pianificatore non lo ottiene sul posto aggiungi due clausole where, cioè where ext->'size' is not null e lo stesso per la messa.

Se è presente uno schema di qualche tipo (che è probabile, dal momento che la maggior parte dei prodotti con una dimensione ha anche una massa), crea potenzialmente un indice multicolonna combinando i due:uno sac, l'altro desc.

L'indice gin come l'hai scritto, insieme alla query di accompagnamento (con un errore di sintassi) farà sostanzialmente la stessa cosa ma non ordinato; sarà più lento.