Em 19 de setembro de 2014 23:28, Wellington <[email protected]> escreveu:
> Pessoal,
>
> em uma tabela foi criado um indice assim: "campo = false".
>
> Quando eu rodo a consulta selecionando "campo is false", o indice nao é
> utilizado.
> O indice so é utilizado se seleciono "campo = false".
> Alguem saberia me explicar por que isso acontece ?

Esse é um recurso do PostgreSQL chamado índice parcial (ou /partial
index/ [1]). Se for utilizar esse recurso, você precisaria criar um
índices para os valores false e outro para os valores true. Dependendo
do número de registros da tabela, um índice simples (sem a clausula de
condição explícita) já é o bastante.

Resumindo: ao invés de criar o índice com uma condição (coluna =
valor), utilize apenas o nome da coluna.

CREATE INDEX <indice> ON <tabela> (<nome_da_coluna>)

Dá uma lida na documentação abaixo:

[1] http://www.postgresql.org/docs/9.3/static/indexes-expressional.html


TIAGO J. ADAMI
http://www.adamiworks.com
@tiadami
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a