? Если существует много записей, где год> 2009, последовательное сканирование может выполняться быстрее, чем сканирование по индексу.

простой пример - одна таблица, один индекс, один запрос:

CREATE TABLE book
(
  id bigserial NOT NULL,
  "year" integer,
  -- other columns...
);

CREATE INDEX book_year_idx ON book (year)

EXPLAIN
 SELECT *
   FROM book b
  WHERE b.year > 2009

дает мне:

Seq Scan on book b  (cost=0.00..25663.80 rows=105425 width=622)
  Filter: (year > 2009)

Почему вместо этого он не выполняет сканирование индекса? Чего мне не хватает?

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

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