| Version 11 (modified by , 13 days ago) ( diff ) |
|---|
Оптимизација на прашалници и погледи
Системот користи погледи за преглед на менито, нарачките, доставите, рецензиите, договорите и лојалноста на клиентите. Индексите го поддржуваат пребарувањето и поврзувањето на податоците.
Погледи
Погледите ги обединуваат поврзаните податоци во прегледи наменети за секојдневното работење и известување.
Мени и каталог
Овие погледи го прикажуваат менито на рестораните. Самите погледи не ја проверуваат активноста на договорите и не го ограничуваат менито според компанијата на клиентот.
| Поглед | Цел | Изворни табели / погледи | Забелешки |
|---|---|---|---|
| v_menu_meal | Ги прикажува јадењата со категорија, ресторан, состојки и алергени. | meal_ingredient, ingredient, alergen_ingredient, alergen, meal, category, restaurant | Состојките и алергените се прикажуваат како азбучно подредени листи без повторувања. Се прикажуваат и јадењата без наведени состојки или алергени. |
| v_menu_drink | Ги прикажува пијалоците, нивната количина и цена, како и ресторанот. | drink, restaurant | Едноставно спојување на drink и restaurant, без агрегации.
|
Нарачки и достави
Овие погледи служат за преглед и следење на нарачките и доставите.
| Поглед | Цел | Изворни табели / погледи | Забелешки |
|---|---|---|---|
| v_orders_full | Прикажува нарачки со податоци за клиентот, компанијата, статусот, доставата и нарачаните јадења и пијалоци. | order_meal, meal, order_drink, drink, customer_order, order_status, customer, api_user, company_order, company, delivery, delivery_status | Јадењата и пијалоците се прикажуваат во подредени листи без повторувања. Податоците за доставувачот се поврзани со доставата. Се прикажуваат и нарачките за кои сè уште нема достава. |
| v_driver_deliveries | Ги прикажува доставите, доставувачите, рестораните, компаниите и поврзаните нарачки. | delivery, delivery_status, driver, api_user, restaurant, company_order, company, v_orders_full | Го користи прегледот на нарачки за деталите за клиентот и нарачаните производи. Се прикажуваат и доставите без назначен доставувач или поврзани нарачки. |
Рецензии
Оцените за нарачки и достави се обединуваат во заеднички извештај.
| Поглед | Цел | Изворни табели / погледи | Забелешки |
|---|---|---|---|
| v_reviews_full | Ги обединува оцените за нарачки и достави, со ознака за типот на рецензијата. | review, order_review, customer_order, api_user, company_order, company, delivery_review, delivery | Секој запис го задржува типот на рецензијата и соодветните оценки. Ако една рецензија се однесува и на нарачка и на достава, се прикажуваат двата записа. |
Договори, фактурирање и лојалност
Овие погледи обезбедуваат статистика за компаниите, договорите, фактурите и клиентите.
| Поглед | Цел | Изворни табели / погледи | Забелешки |
|---|---|---|---|
| v_contracts_revenue | За секој договор ги прикажува бројот на компаниски и клиентски нарачки и вкупниот приход за парот компанија–ресторан. | order_meal, meal, order_drink, drink, customer_order, company_order, contract, company, restaurant, contract_status | Статистиката ги опфаќа сите нарачки, независно од датумот и статусот на договорот или нарачката. Целиот износ на нарачката се брои кај секој вклучен ресторан. Договорите за истиот пар компанија–ресторан ја прикажуваат истата статистика. |
| v_company_billing_overview | За секоја фактура ги прикажува компанијата, доставата, бројот на клиентски нарачки, нивниот вкупен износ и бројот на договори на компанијата. | contract, invoice, company_order, company, customer_order | Износот на фактурата е збир од поврзаните клиентски нарачки. Бројот на договори се пресметува одделно. Фактурите без клиентски нарачки имаат број и износ еднакви на нула. |
| v_customer_loyalty_full_v2 | Ги прикажува клиентот, компанијата, поените, статусот и нивото на лојалност, бројот на нарачки, вкупната потрошувачка и датумот на последната нарачка. | customer_order, customer_loyalty, customer, company, api_user, customer_loyalty_status, loyalty_tier | Статистиката се пресметува по клиент и ги опфаќа сите статуси на нарачки. Се прикажуваат членовите на програмата за лојалност, вклучувајќи ги и оние без нарачки. |
Термини за ручек
Погледот го поврзува распоредот за ручек со доставувачите на соодветниот ресторан.
| Поглед | Цел | Изворни табели / погледи | Забелешки |
|---|---|---|---|
| v_driver_lunch_timers | Ги поврзува термините за ручек со договорите, компаниите, рестораните и доставувачите. | lunch_time, contract, company, restaurant, driver, api_user | Се добива ред за секој термин и секој доставувач на ресторанот. Погледот не го ограничува резултатот на назначениот доставувач и не филтрира активни договори или денови. Термините за ресторани без доставувачи не се прикажуваат. |
Индекси
Индексите се поврзани со изворните табели и го поддржуваат пребарувањето по компанија, клиент, ресторан, доставувач и нарачка. Еден индекс може да се користи од повеќе погледи.
Примарните клучеви и уникатните ограничувања обезбедуваат основни индекси за идентификација и поврзување на записите. Дополнителните индекси ги поддржуваат почестите пребарувања и групирања.
Индекси за мени
| Област | Индекси | Поддржани погледи | Забелешки |
|---|---|---|---|
| Мени со јадења | 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.
|
| Мени со пијалоци | Основни и заеднички индекси | v_menu_drink | Нема дополнителен индекс. restaurant(rest_id) е примарен клуч, а drink(rest_id, drink_name) веќе има UNIQUE индекс.
|
Индекси за нарачки, достави и рецензии
| Област | Индекси | Поддржани погледи | Забелешки |
|---|---|---|---|
| Нарачки | 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 | Заеднички индекси за пронаоѓање компаниски и клиентски нарачки и за поврзување на јадењата и пијалоците по нарачка. Пребарувањата по доставувач и клиент се поддржани и со индексите за достави и лојалност. |
| Достави | delivery(driver_user_id, delivery_date) | v_driver_deliveries, v_orders_full, v_reviews_full | Пребарување по доставувач и датум. Се користат и заедничките индекси за нарачки и за поврзување на доставувачите со рестораните. |
| Рецензии | Основни и заеднички индекси | v_reviews_full | Нема дополнителен индекс. Врските преку review_id, order_id и delivery_id се покриени со примарни и уникатни клучеви. Се користат и заедничките индекси за нарачки, достави и клиенти.
|
Индекси за договори, фактурирање, лојалност и термини
| Област | Индекси | Поддржани погледи | Забелешки |
|---|---|---|---|
| Договори и приходи | contract(company_id, rest_id) | v_contracts_revenue, v_company_billing_overview | Водечката колона company_id поддржува и групирање на договорите за фактурирање. Истиот индекс поддржува пребарување само по компанија. За нарачките се користат заедничките индекси.
|
| Фактурирање | Основни и заеднички индекси | v_company_billing_overview | Нема дополнителен индекс. Ги користи заедничките индекси company_order(company_id), customer_order(comp_order_id) и contract(company_id, rest_id). invoice(comp_order_id) веќе има UNIQUE индекс.
|
| Лојалност на клиентите | 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.
|
| Термини за ручек | 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, па не бара филтер по ден.
|
Тестирање на базата пред користење на индексите
Тестирањето пред дополнителното индексирање служи за утврдување на почетните перформанси на прашалниците. Основните индекси од примарните клучеви и уникатните ограничувања остануваат присутни.
Податоци и услови за тестирање
Прашалници и планови за извршување
Резултати пред индексите
| Поглед | Прашалник / филтер | Време на извршување (ms) | План на извршување / забелешки |
|---|---|---|---|
v_menu_drink | |||
v_menu_meal | |||
v_orders_full | |||
v_reviews_full | |||
v_driver_deliveries | |||
v_contracts_revenue | |||
v_customer_loyalty_full_v2 | |||
v_driver_lunch_timers | |||
v_company_billing_overview |
Тестирање на базата по користење на индексите
Тестирањето по дополнителното индексирање служи за споредба со почетните перформанси. Споредбата се заснова на исти податоци, прашалници и услови за извршување.
Применети индекси
Прашалници и планови за извршување
Резултати по индексите
| Поглед | Прашалник / филтер | Време на извршување (ms) | План на извршување / забелешки |
|---|---|---|---|
v_menu_drink | |||
v_menu_meal | |||
v_orders_full | |||
v_reviews_full | |||
v_driver_deliveries | |||
v_contracts_revenue | |||
v_customer_loyalty_full_v2 | |||
v_driver_lunch_timers | |||
v_company_billing_overview |
Споредба и заклучок
Attachments (1)
- Izveshtaj_indeksiranje_pogledi.pdf (660.9 KB ) - added by 11 days ago.
Download all attachments as: .zip
