Podemos criar um índice para uma chave/valor de um tipo de dados JSONB?
Por exemplo, para estes esquemas:
CREATE TABLE x (
id BIGSERIAL,
data JSONB
);
CREATE TABLE y (
id BIGSERIAL,
data JSONB
);
A consulta lenta:
SELECT *
FROM x
LEFT JOIN y
ON (y.data->>'x_id')::BIGINT = x.id
Como criar um índice para y.data->>'x_id'
que possa ser usado para esse tipo de consulta?
Sugiro um índice de expressão no valor da chave 'x_id', convertido em
bigint
- planície (padrão) B-tree , não GIN. Uma armadilha aqui: a notação curta para conversões de tipo requer um conjunto adicional de parênteses para fazer a sintaxe funcionar para a criação do índice:Como alternativa, use a forma explícita (para o mesmo efeito):