powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Pushdown predicates to union all view
2 сообщений из 2, страница 1 из 1
Pushdown predicates to union all view
    #39774596
expel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет,

Тест сценарий:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
create table test_table as
select
row_number() OVER (ORDER BY null) as id,
extract(epoch from date_trunc('second', NOW()) - '1 minute'::INTERVAL * ROUND(RANDOM() * 60*24*180)) start_ts,
floor(random()*(15))+1 key1,
floor(random()*(7))+1 key2,
floor(random()*(2))+1 key3,
floor(random()*2) + 1 key4
from generate_series(1, 4000000) s(i);

CREATE INDEX idx_start_ts1 ON test_table (start_ts);

analyze test_table;

create or replace view test_push1 as
select * from test_table
union all
select 1,1,1,1,1,1;

create or replace view test_push2 as
select * from test_table;


Далее смотрим планы:

Код: sql
1.
2.
3.
4.
5.
explain analyze
select *
from test_push2
where start_ts >= 1534680463 + 60*60*18*45 
  and start_ts < 1534680463 + 60*60*24*44


Получаем index scan, все ок

Код: sql
1.
2.
3.
4.
5.
explain analyze
select *
from test_push1
where start_ts >= 1534680463 + 60*60*18*45 
  and start_ts < 1534680463 + 60*60*24*44


Получаем full scan, все плохо

Есть ли способ заставить postgres использовать индексы для вьюшек с union all?
Проверял этот тетс для версий 9.5, 9.6, 11.2 в default конфигурации
...
Рейтинг: 0 / 0
Pushdown predicates to union all view
    #39774634
expel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
UPD.

Если использовать во view две таблицы с одинаковыми индекcами:

Код: sql
1.
2.
3.
4.
create or replace view test_push1 as
select * from test_table
union all
select * from test_table2



То работает.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Pushdown predicates to union all view
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]