Задать вопрос
@postgresdev

Как создать индекс в postgresql для view?

Выполняю:
create index idx_denormalized_account_user_products_account_id
on public.denormalized_account_user_products (account_id);

Выдает ошибку:
[42809] ERROR: "denormalized_account_user_products" is not a table or materialized view
  • Вопрос задан
  • 3070 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • QA Studio
    Инженер по тестированию: с нуля до Junior+
    4 месяца
    Далее
  • Merion Academy
    Основы реляционных баз данных SQL
    1 месяц
    Далее
  • Учебный центр IBS
    ARC-PRG-001 Архитектор ПО. Путь к мастерству в проектировании систем
    2 недели
    Далее
Решения вопроса 1
Melkij
@Melkij
DBA для вашего PostgreSQL?
Никак.
view не хранит никаких данных, а раз нет данных - то не по чему строить индекс.
Пример принципиальной проблемы индекса на view: если сделать view вида select foo, avg(bar) from tablename group by foo; - как пересчитывать данные при изменении строк в tablename?

Индекс может быть создан на материализованном представлении (materialized view) - потому что такое представление данные хранит непосредственно. Но обновлять эти данные требуется вручную запросом REFRESH MATERIALIZED VIEW, который выполнит запрос, запишет его результат в новый heap, затем заменит старый heap новым (если не указан concurrently) либо обновит несовпадающие строки (для concurrently)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы