wiki:MenuDrinkIndex

Индекс: v_menu_drink_index

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

Опис

Композитен индекс на табелата drink за поддршка на JOIN-от по rest_id и директно лоцирање на записи по drink_id. Ги подобрува пребарувањата на мени по ресторан.

DDL

-- indexes/v_menu_drink_index.sql
-- Note: uq_drink_restaurant_name already supports (rest_id, drink_name).
CREATE INDEX IF NOT EXISTS idx_drink_rest_id_drink_id
ON kbnteam.drink (rest_id, drink_id);

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

Преглед Колона Начин на употреба
v_menu_drink drink.rest_idrestaurant.rest_id JOIN и WHERE филтрирање
v_customer_contract_drinks drink.rest_idcontract.rest_id JOIN во ланецот customer → company → contract → restaurant → drink
v_customer_contract_menu Посредно преку v_customer_contract_drinks UNION ALL дел за пијачи

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

Колона Позиција Причина
rest_id 1-ва (leading) Прима JOIN-от по ресторан; се користи и за WHERE rest_id = ?
drink_id 2-ра (covering) Овозможува index-only scan; ги опфаќа Look-Up-овите по drink_id

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

SELECT indexname, indexdef
FROM pg_indexes
WHERE schemaname = 'kbnteam'
  AND indexname = 'idx_drink_rest_id_drink_id';

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

При филтрирање по rest_id, планерот треба да премине од Seq Scan (читање на целата табела drink) кон Index Scan или Bitmap Index Scan. Особено значајно кога има многу ресторани или голем мени каталог.

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