Помогите с индексом для поля timestamp

Добрый день
есть таблица

CREATE TABLE material
(
  mid bigserial NOT NULL,
...
  active_from timestamp without time zone,
....
  CONSTRAINT material_pkey PRIMARY KEY (mid),
)
 
CREATE INDEX i_test_t_year
  ON material
  USING btree
  (date_part('year'::text, active_from));

если делать сортировку по полю mid

SELECT mid FROM material ORDER BY mid DESC
"Index Only Scan Backward using material_pkey on material  (cost=0.29..3573.20 rows=100927 width=8)"

а если сделать сортировку по полю active_from

SELECT * FROM material ORDER BY active_from DESC
"Sort  (cost=12067.29..12319.61 rows=100927 width=16)"
"  Sort Key: active_from"
"  ->  Seq Scan on material  (cost=0.00..1953.27 rows=100927 width=16)"

возможно индекс надо поменять?

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Если я правильно понимаю, вы

Если я правильно понимаю, вы построили индекс, включив в него только год. Возможно поэтому оптимизатор решил, что использовать данный индекс бестолково в силу его неэфективности.

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023