Re: Indice en tabla...

From: Manuel Sugawara <masm(at)fciencias(dot)unam(dot)mx>
To: Enzo Ana <arana(at)issys(dot)gov(dot)ar>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Indice en tabla...
Date: 2005-04-20 15:13:06
Message-ID: m3ll7d1ny5.fsf@conexa.fciencias.unam.mx
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Enzo Ana <arana(at)issys(dot)gov(dot)ar> writes:

> Mil gracias Manuel...
>
> En este caso estoy seguro que la consulta debera entrar de alguna forma
> por indice porque la tabla tiene cuatro millones y medio registros.
> Seguire investigando la forma de mejorar este bendito query.

Creo que hay algo que estas entendiendo mal de como se impelenta una
base de datos. En las bases de datos el performance depende en gran
medida de cuantas lecturas a disco hagas, si tienes consultas como
las que presentas:

WHERE atributo <> 'valorDeTexto'
WHERE atributo NOT IN ('valorDeTexto1', 'valorDeTexto2', ..., 'valorDeTextoN')

y pretendes que se use el índice entonces pg tendría que leer primero
el índice completo (ya que el complemento de 4 millones de registros
que satisfacen <> 'valorDeTexto' es en el peor caso 3,999,999
registros) y después la tabla completa (por las mismas razones de
arriba), lo cual es doble trabajo que además *no es necesario* ya que
de todas formas vas a leer la tabla casi completa.

Ahora, tu otra consulta:

WHERE atributo NOT LIKE 'valorDeTexto'

Simplemente no se puede indexar o al menos no con la infraestructura
presente hoy en día en PostgreSQL.

Saludos,
Manuel.

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alex Castillo 2005-04-20 16:12:12 Ayuda con Arquitectura o Requerimientos de maquina
Previous Message Roberto Cesar Najera 2005-04-20 15:12:51 Re: postgres password