wiki:MenuDrinkIndex

Version 1 (modified by 185022, 2 weeks ago) ( diff )

--

Индекс: 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. Особено значајно кога има многу ресторани или голем мени каталог.

Note: See TracWiki for help on using the wiki.