| | 1 | = Индекс: v_contracts_revenue_index = |
| | 2 | |
| | 3 | ||= Датотека ||= `indexes/v_contracts_revenue_index.sql` || |
| | 4 | ||= Шема ||= `kbnteam` || |
| | 5 | ||= Поврзани прегледи ||= `v_contracts_revenue`, `v_company_billing_overview`, `v_orders_full`, `v_driver_deliveries` || |
| | 6 | |
| | 7 | == Опис == |
| | 8 | Четири индекси за поддршка на прегледот `v_contracts_revenue`. Таргетираат CTE-то `order_restaurants` (UNION по order_meal и order_drink) и главниот SELECT за договори по компанија и ресторан. |
| | 9 | |
| | 10 | == DDL == |
| | 11 | {{{ |
| | 12 | #!sql |
| | 13 | -- indexes/v_contracts_revenue_index.sql |
| | 14 | CREATE INDEX IF NOT EXISTS idx_order_meal_order_id_meal_id |
| | 15 | ON kbnteam.order_meal (order_id, meal_id); |
| | 16 | |
| | 17 | CREATE INDEX IF NOT EXISTS idx_order_drink_order_id_drink_id |
| | 18 | ON kbnteam.order_drink (order_id, drink_id); |
| | 19 | |
| | 20 | CREATE INDEX IF NOT EXISTS idx_customer_order_comp_order_id |
| | 21 | ON kbnteam.customer_order (comp_order_id); |
| | 22 | |
| | 23 | CREATE INDEX IF NOT EXISTS idx_contract_company_id_rest_id |
| | 24 | ON kbnteam.contract (company_id, rest_id); |
| | 25 | }}} |
| | 26 | |
| | 27 | == Поддржани прегледи == |
| | 28 | ||= Индекс ||= Прегледи ||= Цел || |
| | 29 | || `idx_order_meal_order_id_meal_id` || `v_contracts_revenue`, `v_orders_full`, `v_driver_deliveries` || CTE `order_restaurants` UNION (страна на оброци) || |
| | 30 | || `idx_order_drink_order_id_drink_id` || `v_contracts_revenue`, `v_orders_full`, `v_driver_deliveries` || CTE `order_restaurants` UNION (страна на пијачи) || |
| | 31 | || `idx_customer_order_comp_order_id` || `v_contracts_revenue` и повеќе | CTE `contract_metrics` JOIN со `company_order` || |
| | 32 | || `idx_contract_company_id_rest_id` || `v_contracts_revenue`, `v_company_billing_overview` || Главен SELECT WHERE company_id; JOIN company+restaurant || |
| | 33 | |
| | 34 | == Колонски план == |
| | 35 | ||= Индекс ||= Колона 1 ||= Колона 2 ||= Причина || |
| | 36 | || `idx_order_meal_order_id_meal_id` || `order_id` || `meal_id` || CTE UNION агрегација по нарачка || |
| | 37 | || `idx_order_drink_order_id_drink_id` || `order_id` || `drink_id` || CTE UNION агрегација по нарачка || |
| | 38 | || `idx_customer_order_comp_order_id` || `comp_order_id` || — || FK JOIN customer_order → company_order || |
| | 39 | || `idx_contract_company_id_rest_id` || `company_id` (leading) || `rest_id` || Composite ключ за договори по компанија+ресторан || |
| | 40 | |
| | 41 | == Верификација == |
| | 42 | {{{ |
| | 43 | #!sql |
| | 44 | SELECT indexname, indexdef |
| | 45 | FROM pg_indexes |
| | 46 | WHERE schemaname = 'kbnteam' |
| | 47 | AND indexname IN ( |
| | 48 | 'idx_order_meal_order_id_meal_id', |
| | 49 | 'idx_order_drink_order_id_drink_id', |
| | 50 | 'idx_customer_order_comp_order_id', |
| | 51 | 'idx_contract_company_id_rest_id' |
| | 52 | ); |
| | 53 | }}} |
| | 54 | |
| | 55 | == Очекувано влијание == |
| | 56 | `idx_contract_company_id_rest_id` е специфичен за овој преглед. Ги забрзува агрегациите по компанија и ресторан и е особено корисен при извршување на финансиски извештаи за конкретна компанија. |