enviosdfa=# EXPLAIN ANALYZE SELECT * FROM envios WHERE apellidos LIKE
'BODEGAS MURUA%' ORDER BY apellidos;
QUERY
PLAN
---------------------------------------------------------------------------------------------------------------------
Sort (cost=144384.87..144384.88 rows=1 width=650) (actual
time=34724.021..34724.040 rows=36 loops=1)
Sort Key: apellidos
-> Seq Scan on envios (cost=0.00..144384.86 rows=1 width=650)
(actual time=1691.879..34723.437 rows=36 loops=1)
Filter: (apellidos ~~ 'BODEGAS MURUA%'::text)
Total runtime: 34724.121 ms
(5 filas)
Un tiempo de consulta exagerado
¿Puede ser porque mi versión de postgres es la 7.4.7?
¿Acepta esta versión índices varchar_pattern_ops?
-------- Mensaje original --------
----- Original Message -----
From: "Raul Andres Duque" <ra_duque@yahoo.com.mx>
To: ""I.N.T. - Programación"" <dpto.programacion@grupo-int.com>
Sent: Monday, December 29, 2008 11:14 AM
Subject: Re: [pgsql-es-ayuda] Consulta, a priori, sencilla
>
> ----- Original Message -----
> From: ""I.N.T. - Programación"" <dpto.programacion@grupo-int.com>
> To: <pgsql-es-ayuda@postgresql.org>
> Sent: Monday, December 29, 2008 10:16 AM
> Subject: [pgsql-es-ayuda] Consulta, a priori, sencilla
>
>
>> Buenas,
>>
>> Tengo una BBDD con una tabla llamada 'envios' de 1.677.229 registros
>>
>> La consulta es:
>>
>> SELECT * FROM envios WHERE apellidos LIKE 'LOQUESEA%'
>>
>> y está creado el índice:
>>
>> CREATE INDEX envios_idx01 ON envios USING btree(apellidos);
>>
>> La consulta tarda casi 50seg. en ejecutarse y es un tiempo inadmisible.
>> Está claro que no utiliza el índice ¿porqué?
>>
recuerda que si tu locale es diferente a 'C', debes los indices con
varchar_pattern_ops. En este link encuentras la info correspondiente:
http://www.postgresql.org/docs/8.3/static/indexes-opclass.html
Atentamente,
RAUL DUQUE
Bogotá, Colombia
>
>> He realizado VACUUM FULL ANALYZE varias veces, regenerado el índice y
>> nada
>>
>> ¿Alguna sugerencia?
>>
>> Gracias de antemano --
>> TIP 4: No hagas 'kill -9' a postmaster
>