Otimizar o intervalo de consulta do registro de data e hora do Postgres

Eu tenho a seguinte tabela e índices definidos:

CREATE TABLE ticket
(
  wid bigint NOT NULL DEFAULT nextval('tickets_id_seq'::regclass),
  eid bigint,
  created timestamp with time zone NOT NULL DEFAULT now(),
  status integer NOT NULL DEFAULT 0,
  argsxml text,
  moduleid character varying(255),
  source_id bigint,
  file_type_id bigint,
  file_name character varying(255),
  status_reason character varying(255),
  ...
)

Eu criei um índice nocreated timestamp da seguinte forma:

CREATE INDEX ticket_1_idx
  ON ticket
  USING btree
  (created );

e aqui está minha consulta

select * from ticket 
where created between '2012-12-19 00:00:00' and  '2012-12-20 00:00:00'

Isso estava funcionando bem até o número de registros começar a crescer (cerca de 5 milhões) e agora está demorando para voltar.

Explique analisar revela isso:

"Index Scan using ticket_1_idx on ticket  (cost=0.00..10202.64 rows=52543 width=1297) (actual time=0.109..125.704 rows=53340 loops=1)"
"  Index Cond: ((created >= '2012-12-19 00:00:00+00'::timestamp with time zone) AND (created <= '2012-12-20 00:00:00+00'::timestamp with time zone))"
"Total runtime: 175.853 ms"

Até agora eu tentei definir

random_page_cost = 1.75 
effective_cache_size = 3 

Também criado

create CLUSTER ticket USING ticket_1_idx;

Nada funciona. O que estou fazendo de errado? Por que está selecionando a varredura sequencial? Os índices devem fazer a consulta rápida. Qualquer coisa que possa ser feita para otimizá-lo?

questionAnswers(1)

yourAnswerToTheQuestion