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

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

Код: 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
15.02.2019, 16:16
    #39774634
expel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pushdown predicates to union all view
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
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Pushdown predicates to union all view / 2 сообщений из 2, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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