| 32 | | Овие погледи поддржуваат креирање извештаи на ниво на компанија. |
| | 36 | ||= Поглед ||= Цел ||= Изворни табели / погледи ||= Забелешки || |
| | 37 | || [wiki:ContractsRevenueView v_contracts_revenue] || За секој договор ги прикажува бројот на компаниски и клиентски нарачки и вкупниот приход за парот компанија–ресторан. || `order_meal`, `meal`, `order_drink`, `drink`, `customer_order`, `company_order`, `contract`, `company`, `restaurant`, `contract_status` || `UNION` ги отстранува повторувањата на парот нарачка–ресторан. Нема филтер за активен договор, датум или статус на нарачка. Целиот износ на нарачката се брои кај секој вклучен ресторан, а истата статистика се повторува кај договорите за истиот пар компанија–ресторан. || |
| | 38 | || [wiki:CompanyBillingOverviewView v_company_billing_overview] || За секоја фактура ги прикажува компанијата, доставата, бројот на клиентски нарачки, нивниот вкупен износ и бројот на договори на компанијата. || `contract`, `invoice`, `company_order`, `company`, `customer_order` || Износот и бројот на нарачки се пресметуваат во главниот прашалник. Договорите се бројат во посебен CTE за да не го умножат износот. Фактурите без клиентски нарачки имаат број и износ еднакви на нула. || |
| | 39 | || [wiki:CustomerLoyaltyFullView v_customer_loyalty_full_v2] || Ги прикажува клиентот, компанијата, поените, статусот и нивото на лојалност, бројот на нарачки, вкупната потрошувачка и датумот на последната нарачка. || `customer_order`, `customer_loyalty`, `customer`, `company`, `api_user`, `customer_loyalty_status`, `loyalty_tier` || CTE изразот `order_stats` пресметува `COUNT`, `SUM` и `MAX` по клиент. Статистиката ги опфаќа сите статуси на нарачки. Се прикажуваат клиентите со запис во `customer_loyalty`, вклучувајќи ги и оние без нарачки. || |
| 55 | | ||= Датотека на индекс ||= Индекси ||= Поддржани погледи ||= Забелешки || |
| 56 | | || [wiki:OrdersFullIndex indexes/v_orders_full_index.sql] || `customer_order(comp_order_id)`, `customer_order(customer_user_id, order_datetime DESC)`, `delivery(driver_user_id, delivery_date)`, `order_meal(order_id, meal_id)`, `order_drink(order_id, drink_id)` || `v_orders_full`, `v_driver_deliveries`, `v_contracts_revenue`, `v_company_billing_overview`, `v_reviews_full` || Поддржува пребарување на нарачки, филтрирање на достави и агрегација на елементи на нарачка. || |
| 57 | | || [wiki:DriverDeliveriesIndex indexes/v_driver_deliveries_index.sql] || `delivery(driver_user_id, delivery_date)`, `order_meal(order_id, meal_id)`, `order_drink(order_id, drink_id)`, `customer_order(comp_order_id)` || `v_driver_deliveries` || Креирано за пребарување на достави од страна на доставувачи. || |
| 58 | | || [wiki:ReviewsFullIndex indexes/v_reviews_full_index.sql] || `customer_order(comp_order_id)` || `v_reviews_full` || Погледот за review во главно зависи од заедничките нарачки и доставувања. || |
| | 56 | ||= Датотека на индекс ||= Индекси дефинирани во датотеката ||= Поддржани погледи ||= Забелешки || |
| | 57 | || [wiki:MenuMealIndex Index 2.0/02_v_menu_meal_index.sql] || `meal(cat_id, meal_id)`, `meal_ingredient(meal_id, ingr_id)`, `alergen_ingredient(ingr_id, alergen_id)` || `v_menu_meal` || Ги поддржува пребарувањето по категорија и врските јадење–состојки–алергени. `meal(rest_id, meal_name)` веќе е покриен со `UNIQUE`. || |
| | 58 | || `Index 2.0/01_v_menu_drink_index.sql` || Нема нови дефиниции || `v_menu_drink` || Нема дополнителен индекс. `restaurant(rest_id)` е примарен клуч, а `drink(rest_id, drink_name)` веќе има `UNIQUE` индекс. || |
| 62 | | ||= Датотека на индекс ||= Индекси ||= Поддржани погледи ||= Забелешки || |
| 63 | | || [wiki:ContractsRevenueIndex indexes/v_contracts_revenue_index.sql] || `order_meal(order_id, meal_id)`, `order_drink(order_id, drink_id)`, `customer_order(comp_order_id)`, `contract(company_id, rest_id)` || `v_contracts_revenue` || Поддржува агрегација за приход по договор по компанија и ресторан. || |
| 64 | | || [wiki:CompanyBillingOverviewIndex indexes/v_company_billing_overview_index.sql] || `contract(company_id)`, `customer_order(comp_order_id)` || `v_company_billing_overview` || Помага на прегледот за наплаќање по договори и салдо на фактурите. || |
| 65 | | || [wiki:CustomerLoyaltyFullIndex indexes/v_customer_loyalty_full_v2_index.sql] || `customer_order(customer_user_id, order_datetime DESC)` || `v_customer_loyalty_full_v2` || Поддржува статистики latest-order и aggregate-order за извештаи за лојалност. || |
| 66 | | || [wiki:DriverLunchTimersIndex indexes/v_driver_lunch_timers_index.sql] || `lunch_time(lunch_weekday, contract_id)`, `driver(rest_id)`, `contract(rest_id, company_id)` || `v_driver_lunch_timers` || Поддржува неделно филтрирање и рутирање restaurant/contract. || |
| | 62 | ||= Датотека на индекс ||= Индекси дефинирани во датотеката ||= Поддржани погледи ||= Забелешки || |
| | 63 | || [wiki:OrdersFullIndex Index 2.0/03_v_orders_full_index.sql] || `company_order(company_id)`, `customer_order(comp_order_id)`, `order_meal(order_id, meal_id)`, `order_drink(order_id, drink_id)` || `v_orders_full`, `v_driver_deliveries`, `v_contracts_revenue`, `v_company_billing_overview`, `v_reviews_full` || Заеднички индекси за пронаоѓање компаниски и клиентски нарачки и за поврзување на јадењата и пијалоците по нарачка. Индексите по доставувач и клиент се дефинирани во датотеките 05 и 07. || |
| | 64 | || [wiki:DriverDeliveriesIndex Index 2.0/05_v_driver_deliveries_index.sql] || `delivery(driver_user_id, delivery_date)` || `v_driver_deliveries`, `v_orders_full`, `v_reviews_full` || Пребарување по доставувач и датум. Ги користи и индексите од датотека 03; индексот за `driver(rest_id)` е во датотека 08. || |
| | 65 | || [wiki:ReviewsFullIndex Index 2.0/04_v_reviews_full_index.sql] || Нема нови дефиниции || `v_reviews_full` || Нема дополнителен индекс. Врските преку `review_id`, `order_id` и `delivery_id` се покриени со примарни и уникатни клучеви. Се користат и заедничките индекси од датотеките 03, 05 и 07. || |
| | 66 | |
| | 67 | === Индекси за договори, фактурирање, лојалност и термини |
| | 68 | |
| | 69 | ||= Датотека на индекс ||= Индекси дефинирани во датотеката ||= Поддржани погледи ||= Забелешки || |
| | 70 | || [wiki:ContractsRevenueIndex Index 2.0/06_v_contracts_revenue_index.sql] || `contract(company_id, rest_id)` || `v_contracts_revenue`, `v_company_billing_overview` || Водечката колона `company_id` поддржува и групирање на договорите за фактурирање. Не се додава посебен индекс само на `contract(company_id)`. Индексите за нарачките се во датотека 03. || |
| | 71 | || [wiki:CompanyBillingOverviewIndex Index 2.0/09_v_company_billing_overview_index.sql] || Нема нови дефиниции || `v_company_billing_overview` || Нема дополнителен индекс. Ги користи `company_order(company_id)` и `customer_order(comp_order_id)` од датотека 03 и `contract(company_id, rest_id)` од датотека 06. `invoice(comp_order_id)` веќе има `UNIQUE` индекс. || |
| | 72 | || [wiki:CustomerLoyaltyFullIndex Index 2.0/07_v_customer_loyalty_full_v2_index.sql] || `customer_order(customer_user_id, order_datetime DESC)`, `customer(company_id)` || `v_customer_loyalty_full_v2`, `v_orders_full` || Пребарување на нарачки по клиент и датум и на клиенти по компанија. `customer_loyalty(user_id)` веќе има `UNIQUE` индекс. За сумата на потрошувачката и натаму се чита `order_total`. || |
| | 73 | || [wiki:DriverLunchTimersIndex Index 2.0/08_v_driver_lunch_timers_index.sql] || `driver(rest_id)`, `contract(rest_id, company_id)`, `lunch_time(contract_id)` || `v_driver_lunch_timers`, `v_driver_deliveries`; пребарување договори по ресторан во `v_contracts_revenue` || Ги поддржува врските ресторан–доставувач, ресторан–договор и договор–термин. Индексот на `lunch_time` започнува со `contract_id`, па не бара филтер по ден. || |
| | 74 | |
| | 75 | == Тестирање на базата пред користење на индексите |
| | 76 | |
| | 77 | Овој дел е оставен за мерењата пред додавање на дополнителните индекси од `Index 2.0`. Во основната состојба остануваат индексите создадени со `PRIMARY KEY` и `UNIQUE`. Ако претходно се применети дополнителните индекси од `index/`, тие треба да се евидентираат; таквото мерење не претставува основна состојба без дополнителни индекси. |
| | 78 | |
| | 79 | === Податоци и услови за тестирање |
| | 80 | |
| | 81 | [Да се внесат верзијата на PostgreSQL, бројот на записи, постојните индекси, условите за кеширање, состојбата на статистиките и бројот на повторувања.] |
| | 82 | |
| | 83 | === Прашалници и планови за извршување |
| | 84 | |
| | 85 | [Простор за SQL прашалници со конкретни филтри, излез од `EXPLAIN (ANALYZE, BUFFERS)` и слики од тестирањето.] |
| | 86 | |
| | 87 | === Резултати пред индексите |
| | 88 | |
| | 89 | ||= Поглед ||= Прашалник / филтер ||= Време на извршување (ms) ||= План / buffers / забелешки || |
| | 90 | || `v_menu_drink` || || || || |
| | 91 | || `v_menu_meal` || || || || |
| | 92 | || `v_orders_full` || || || || |
| | 93 | || `v_reviews_full` || || || || |
| | 94 | || `v_driver_deliveries` || || || || |
| | 95 | || `v_contracts_revenue` || || || || |
| | 96 | || `v_customer_loyalty_full_v2` || || || || |
| | 97 | || `v_driver_lunch_timers` || || || || |
| | 98 | || `v_company_billing_overview` || || || || |
| | 99 | |
| | 100 | == Тестирање на базата по користење на индексите |
| | 101 | |
| | 102 | Овој дел е оставен за мерењата по примената на индексите од `Index 2.0`. Се користат истите податоци, прашалници, филтри, услови за кеширање и број на повторувања како во претходниот дел, со ажурирани статистики за табелите во двете состојби. |
| | 103 | |
| | 104 | === Применети индекси |
| | 105 | |
| | 106 | [Простор за список на индексите што навистина се присутни во базата и потврда за применетите SQL датотеки.] |
| | 107 | |
| | 108 | === Прашалници и планови за извршување |
| | 109 | |
| | 110 | [Простор за истиот сет SQL прашалници, излез од `EXPLAIN (ANALYZE, BUFFERS)` и слики од тестирањето.] |
| | 111 | |
| | 112 | === Резултати по индексите |
| | 113 | |
| | 114 | ||= Поглед ||= Прашалник / филтер ||= Време на извршување (ms) ||= План / buffers / забелешки || |
| | 115 | || `v_menu_drink` || || || || |
| | 116 | || `v_menu_meal` || || || || |
| | 117 | || `v_orders_full` || || || || |
| | 118 | || `v_reviews_full` || || || || |
| | 119 | || `v_driver_deliveries` || || || || |
| | 120 | || `v_contracts_revenue` || || || || |
| | 121 | || `v_customer_loyalty_full_v2` || || || || |
| | 122 | || `v_driver_lunch_timers` || || || || |
| | 123 | || `v_company_billing_overview` || || || || |
| | 124 | |
| | 125 | === Споредба и заклучок |
| | 126 | |
| | 127 | [Простор за споредба на времињата, плановите и прочитаните блокови пред и по индексите. Да се евидентираат и прашалниците кај кои нема подобрување. Изборот на индекс зависи од податоците и филтрите; целосните прегледи и агрегации можат да користат секвенцијално читање.] |