sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL - fråga mot GIN-index för HSTORE-värde

Ditt första försök är korrekt men du måste använda (partiella) btree-index och bitmappsindexskanningar för att lita på det:

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

Samma sak för massa, och om planeraren inte får det på plats lägg till två där satser, dvs where ext->'size' is not null och samma sak för massa.

Om det finns ett mönster av något slag (vilket är troligt, eftersom de flesta produkter med en storlek också har en massa), skapa potentiellt ett flerkolumnindex som kombinerar de två - en påse, den andra beskrivningen.

Ginindexet som du skrev det, tillsammans med den medföljande frågan (med ett syntaxfel) kommer i princip att göra samma sak men oordnat; det kommer att gå långsammare.



  1. Oracles semantik lagrade procedurer/funktioner i ett transaktionssammanhang

  2. Laravel:Hur tar man bort rader från flera tabeller med samma id med bara en fråga?

  3. Returnerar ett värde även om inget resultat

  4. Välja unika rader i en uppsättning av två möjligheter