wiki:MenuMealIndex

Индекс: v_menu_meal_index

Датотека indexes/v_menu_meal_index.sql
Шема kbnteam
Поврзани прегледи v_menu_meal, v_customer_contract_meals, v_customer_contract_menu

Опис

Три индекси кои ги забрзуваат CTE агрегациите за состојки и алергени во прегледот v_menu_meal и сродните прегледи. Секој индекс таргетира различна табела вклучена во ланецот meal → meal_ingredient → alergen_ingredient.

DDL

-- indexes/v_menu_meal_index.sql
-- Note: uq_meal_restaurant_name already supports (rest_id, meal_name).
CREATE INDEX IF NOT EXISTS idx_meal_cat_id_meal_id
ON kbnteam.meal (cat_id, meal_id);

CREATE INDEX IF NOT EXISTS idx_meal_ingredient_meal_id_ingr_id
ON kbnteam.meal_ingredient (meal_id, ingr_id);

CREATE INDEX IF NOT EXISTS idx_alergen_ingredient_ingr_id_alergen_id
ON kbnteam.alergen_ingredient (ingr_id, alergen_id);

Поддржани прегледи

Преглед Индекс Начин на употреба
v_menu_meal idx_meal_cat_id_meal_id WHERE cat_id = ? и JOIN со category
v_menu_meal idx_meal_ingredient_meal_id_ingr_id CTE meal_ingredients — JOIN meal_ingredient по meal_id
v_menu_meal idx_alergen_ingredient_ingr_id_alergen_id CTE meal_allergens — JOIN alergen_ingredient по ingr_id
v_customer_contract_meals Сите три Истите CTE шаблони
v_customer_contract_menu Сите три Посредно преку v_customer_contract_meals

Колонски план

Индекс Табела Колона 1 Колона 2 Причина
idx_meal_cat_id_meal_id meal cat_id (leading) meal_id (covering) Го поддржува JOIN по категорија и WHERE cat_id филтер
idx_meal_ingredient_meal_id_ingr_id meal_ingredient meal_id (leading) ingr_id (covering) CTE meal_ingredients: GROUP BY meal_id, JOIN ingredient по ingr_id
idx_alergen_ingredient_ingr_id_alergen_id alergen_ingredient ingr_id (leading) alergen_id (covering) CTE meal_allergens: JOIN alergen_ingredient по ingr_id

Верификација

SELECT indexname, indexdef
FROM pg_indexes
WHERE schemaname = 'kbnteam'
  AND indexname IN (
      'idx_meal_cat_id_meal_id',
      'idx_meal_ingredient_meal_id_ingr_id',
      'idx_alergen_ingredient_ingr_id_alergen_id'
  );

Очекувано влијание

Трите индекси заедно ги намалуваат Hash Join/Sort операциите во CTE агрегациите. Поголемо подобрување е видливо кога постојат многу оброци и богати листи на состојки и алергени.

Last modified 2 weeks ago Last modified on 05/10/26 14:40:12
Note: See TracWiki for help on using the wiki.