Функциональные индексы для view

Здравсвтуйте!

Задался таким вопросом: Работают ли функциональные индксы для view. И можно ли создавать функциональные индексы по самописным функциям.

Более подробный пример:

таблица items:
item_id, name

таблица types:
type_id, name, price

таблица item_types:
item_id, type_id

функция get_item_price(item_id):
считает цену для заданного item_id:

SELECT sum(price) FROM types 
INNER JOIN item_types ON  item_types.type_id = types.type_id
WHERE item_types.item_id = $1

view item_price:
item_id, get_item_price(item_id) as item_price

Имеет ли смысл создавать функциональный индекс?:

CREATE INDEX item_price_idx
 ON item
 USING btree
 (get_item_price(item_id));

Будет ли он работать в запросe  SELECT * FROM item_price WHERE item_price = ?

Заранее спасибо!

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

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

Я не знаю будет ли работать

Я не знаю будет ли работать данный индекс в конкретном запросе, однако знаю, что это легко можно проверить.
Создайте индекст и перед SELECT поставьте EXPLAIN. По плану запроса будет всё понятно.

Ой я балбес  Я же смотрел

Ой я балбес :)

Я же смотрел explain.
Только не explain select * from item_price where item_price = ? a просто explain select * from item_price

Естественно ничего не было видно :)

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

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

Back to top

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