Re: Adding non-selective key to jsonb query @> reduces performance?
От | Tom Lane |
---|---|
Тема | Re: Adding non-selective key to jsonb query @> reduces performance? |
Дата | |
Msg-id | 1623002.1654698723@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Adding non-selective key to jsonb query @> reduces performance? (Marcin Krupowicz <ma@rcin.me>) |
Список | pgsql-performance |
Marcin Krupowicz <ma@rcin.me> writes: > However this one, is slow: > Q2 > select count(*) from tbl where row @> '{"SELECTIVE_COL": > "SearchValue", "DATE": "20220606", "NON_SELECTIVE_COL": "Abc"}'::jsonb > It takes 17ms > Note that the only difference is adding one more - not very unique - > key. If in Q2 I replaced NON_SELECTIVE_COL with another selective > column, it's becoming fast again. This doesn't surprise me a whole lot based on what I know of GIN. It's going to store sets of TIDs associated with each key or value mentioned in the data, and then a query will have to AND the sets of TIDs for keys/values mentioned in the query. That will take longer when some of those sets are big. It might be worth experimenting with an index built using the non-default jsonb_path_ops opclass [1]. I'm not sure if that'd be faster for this scenario, but it seems worth trying. regards, tom lane [1] https://www.postgresql.org/docs/current/datatype-json.html#JSON-INDEXING
В списке pgsql-performance по дате отправления: