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.
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 |