Índices para tipos RANGE no PostgreSQL

O PostgreSQL conta com uma categoria de tipo de dados chamados RANGEs.

Esses tipos de dados representam um início e um fim de qualquer tipo de dado que possa crescer, que seja escalar, tipo números inteiros, números com vírgula, hora, data, data-hora, etc.

Caso você decida usar esse tipo, aqui vai um exemplo de como criar um índice usando o tipo TSRANGE (range de timestamp sem fuso horário).

Você irá usar um índice do tipo GIST, é um índice especial, diferente da tradicional BTREE (Árvore B):

CREATE INDEX CONCURRENTLY
--o concurrently serve para que enquanto o índice for criado,
--a tabela não seja travada e escritas sejam bloqueadas
ON nome_da_tabela
USING GIST (nome_da_coluna_tsrange)
--Ou caso tenha duas colunas de timestamps,
--você também pode usar funções ou casting:
-- USING GIST (tsrange(coluna_ts_inicio,coluna_ts_fim))
;

Referências

Artigo sobre tipos de índices
View story at Medium.com

Artigo sobre tipos de índices no PostgreSQL
https://robots.thoughtbot.com/postgres-index-types

Artigo sobre criação de índices para busca textual
https://www.compose.com/articles/indexing-for-full-text-search-in-postgresql/

Artigo no DevMedia sobre vários tipos de índices do PostgreSQL
https://www.devmedia.com.br/trabalhando-com-indices-no-postgresql/34028

Documentação PostgreSQL de tipos de dados baseados em Range (intervalo)
https://www.postgresql.org/docs/current/static/rangetypes.html

Documentação PostgreSQL de tipos de índices
https://www.postgresql.org/docs/current/static/indexes-types.html

Documentação PostgreSQL de índices para busca em texto
https://www.postgresql.org/docs/current/static/textsearch-indexes.html

Documentação PostgreSQL do CREATE INDEX
https://www.postgresql.org/docs/current/static/sql-createindex.html

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *