Оптимизировать диапазон запросов Postgres timestamp

У меня есть следующая таблица и индексы определены:

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

Я создал индекс наcreated отметка времени выглядит следующим образом:

CREATE INDEX ticket_1_idx
  ON ticket
  USING btree
  (created );

и вот мой запрос

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

Это работало нормально, пока число записей не начало расти (около 5 миллионов), и теперь требуется вечность, чтобы вернуться.

Объясните, анализ показывает это:

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

До сих пор я пытался установить

random_page_cost = 1.75 
effective_cache_size = 3 

Также создан

create CLUSTER ticket USING ticket_1_idx;

Ничего не работает Что я делаю неправильно? Почему выбирается последовательное сканирование? Индексы должны сделать запрос быстрым. Что-нибудь, что может быть сделано, чтобы оптимизировать это?

Ответы на вопрос(1)

Ваш ответ на вопрос