= Индекс: 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 == {{{ #!sql -- 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_id` → `restaurant.rest_id` || JOIN и WHERE филтрирање || || `v_customer_contract_drinks` || `drink.rest_id` → `contract.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 || == Верификација == {{{ #!sql 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. Особено значајно кога има многу ресторани или голем мени каталог.