Changes between Version 14 and Version 15 of QueryViewsOptimization


Ignore:
Timestamp:
09/16/26 11:59:08 (10 days ago)
Author:
223235
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • QueryViewsOptimization

    v14 v15  
    1 = Оптимизација на прашалници и погледи
     1= Оптимизација на прашалници и погледи =
    22
    3 Системот користи погледи за преглед на менито, нарачките, доставите, рецензиите, договорите и лојалноста на клиентите. Индексите го поддржуваат пребарувањето и поврзувањето на податоците.
     3Погледите го прикажуваат менито, нарачките, доставите, рецензиите, договорите, фактурите и лојалноста на клиентите. Дополнителното индексирање е задржано за `v_orders_full`, `v_driver_deliveries` и `v_contracts_revenue`.
    44
    5 == Погледи
     5== Погледи ==
    66
    7 Погледите ги обединуваат поврзаните податоци во прегледи наменети за секојдневното работење и известување.
     7=== Мени и каталог ===
    88
    9 === Мени и каталог
     9||= Поглед ||= Намена ||= Индексна поддршка ||
     10|| [wiki:MenuMealView v_menu_meal] || Ги прикажува јадењата со категорија, ресторан, состојки и алергени. || Постоечка индексна поддршка. ||
     11|| [wiki:MenuDrinkView v_menu_drink] || Ги прикажува пијалоците, нивната количина и цена, како и ресторанот. || Постоечка индексна поддршка. ||
    1012
    11 Овие погледи го прикажуваат менито на рестораните. Самите погледи не ја проверуваат активноста на договорите и не го ограничуваат менито според компанијата на клиентот.
     13=== Нарачки и достави ===
    1214
    13 ||= Поглед ||= Цел ||= Изворни табели / погледи ||= Забелешки ||
    14 || [wiki:MenuMealView v_menu_meal] || Ги прикажува јадењата со категорија, ресторан, состојки и алергени. || `meal_ingredient`, `ingredient`, `alergen_ingredient`, `alergen`, `meal`, `category`, `restaurant` || Состојките и алергените се прикажуваат како азбучно подредени листи без повторувања. Се прикажуваат и јадењата без наведени состојки или алергени. ||
    15 || [wiki:MenuDrinkView v_menu_drink] || Ги прикажува пијалоците, нивната количина и цена, како и ресторанот. || `drink`, `restaurant` || Едноставно спојување на `drink` и `restaurant`, без агрегации. ||
     15||= Поглед ||= Намена ||= Индексна поддршка ||
     16|| [wiki:OrdersFullView v_orders_full] || Прикажува нарачки со податоци за клиентот, компанијата, статусот, доставата и нарачаните јадења и пијалоци. || [wiki:OrdersFullIndex v_orders_full_index] ||
     17|| [wiki:DriverDeliveriesView v_driver_deliveries] || Ги прикажува доставите, доставувачите, рестораните, компаниите и поврзаните нарачки. || [wiki:DriverDeliveriesIndex v_driver_deliveries_index] ||
    1618
    17 === Нарачки и достави
     19=== Рецензии ===
    1820
    19 Овие погледи служат за преглед и следење на нарачките и доставите.
     21||= Поглед ||= Намена ||= Индексна поддршка ||
     22|| [wiki:ReviewsFullView v_reviews_full] || Ги обединува оцените за нарачки и достави, со ознака за типот на рецензијата. || Постоечка индексна поддршка. ||
    2023
    21 ||= Поглед ||= Цел ||= Изворни табели / погледи ||= Забелешки ||
    22 || [wiki:OrdersFullView v_orders_full] || Прикажува нарачки со податоци за клиентот, компанијата, статусот, доставата и нарачаните јадења и пијалоци. || `order_meal`, `meal`, `order_drink`, `drink`, `customer_order`, `order_status`, `customer`, `api_user`, `company_order`, `company`, `delivery`, `delivery_status` || Јадењата и пијалоците се прикажуваат во подредени листи без повторувања. Податоците за доставувачот се поврзани со доставата. Се прикажуваат и нарачките за кои сè уште нема достава. ||
    23 || [wiki:DriverDeliveriesView v_driver_deliveries] || Ги прикажува доставите, доставувачите, рестораните, компаниите и поврзаните нарачки. || `delivery`, `delivery_status`, `driver`, `api_user`, `restaurant`, `company_order`, `company`, `v_orders_full` || Го користи прегледот на нарачки за деталите за клиентот и нарачаните производи. Се прикажуваат и доставите без назначен доставувач или поврзани нарачки. ||
     24=== Договори, фактурирање и лојалност ===
    2425
    25 === Рецензии
     26||= Поглед ||= Намена ||= Индексна поддршка ||
     27|| [wiki:ContractsRevenueView v_contracts_revenue] || За секој договор ги прикажува бројот на компаниски и клиентски нарачки и вкупниот приход за парот компанија–ресторан. || [wiki:ContractsRevenueIndex v_contracts_revenue_index] ||
     28|| [wiki:CompanyBillingOverviewView v_company_billing_overview] || За секоја фактура ги прикажува компанијата, доставата, бројот на клиентски нарачки, нивниот вкупен износ и бројот на договори на компанијата. || Постоечка индексна поддршка. ||
     29|| [wiki:CustomerLoyaltyFullView v_customer_loyalty_full_v2] || Ги прикажува клиентот, компанијата, поените, статусот и нивото на лојалност, бројот на нарачки, вкупната потрошувачка и датумот на последната нарачка. || Постоечка индексна поддршка. ||
    2630
    27 Оцените за нарачки и достави се обединуваат во заеднички извештај.
     31=== Термини за ручек ===
    2832
    29 ||= Поглед ||= Цел ||= Изворни табели / погледи ||= Забелешки ||
    30 || [wiki:ReviewsFullView v_reviews_full] || Ги обединува оцените за нарачки и достави, со ознака за типот на рецензијата. || `review`, `order_review`, `customer_order`, `api_user`, `company_order`, `company`, `delivery_review`, `delivery` || Секој запис го задржува типот на рецензијата и соодветните оценки. Ако една рецензија се однесува и на нарачка и на достава, се прикажуваат двата записа. ||
     33||= Поглед ||= Намена ||= Индексна поддршка ||
     34|| [wiki:DriverLunchTimersView v_driver_lunch_timers] || Ги поврзува термините за ручек со договорите, компаниите, рестораните и доставувачите. || Постоечка индексна поддршка. ||
    3135
    32 === Договори, фактурирање и лојалност
     36== Дополнително индексирање ==
    3337
    34 Овие погледи обезбедуваат статистика за компаниите, договорите, фактурите и клиентите.
     38Трите групи содржат вкупно шест дополнителни индекси врз изворните табели. Истиот индекс може да се користи од повеќе погледи; тоа не значи дека за секој од нив е додадена посебна група индекси.
    3539
    36 ||= Поглед ||= Цел ||= Изворни табели / погледи ||= Забелешки ||
    37 || [wiki:ContractsRevenueView v_contracts_revenue] || За секој договор ги прикажува бројот на компаниски и клиентски нарачки и вкупниот приход за парот компанија–ресторан. || `order_meal`, `meal`, `order_drink`, `drink`, `customer_order`, `company_order`, `contract`, `company`, `restaurant`, `contract_status` || Статистиката ги опфаќа сите нарачки, независно од датумот и статусот на договорот или нарачката. Целиот износ на нарачката се брои кај секој вклучен ресторан. Договорите за истиот пар компанија–ресторан ја прикажуваат истата статистика. ||
    38 || [wiki:CompanyBillingOverviewView v_company_billing_overview] || За секоја фактура ги прикажува компанијата, доставата, бројот на клиентски нарачки, нивниот вкупен износ и бројот на договори на компанијата. || `contract`, `invoice`, `company_order`, `company`, `customer_order` || Износот на фактурата е збир од поврзаните клиентски нарачки. Бројот на договори се пресметува одделно. Фактурите без клиентски нарачки имаат број и износ еднакви на нула. ||
    39 || [wiki:CustomerLoyaltyFullView v_customer_loyalty_full_v2] || Ги прикажува клиентот, компанијата, поените, статусот и нивото на лојалност, бројот на нарачки, вкупната потрошувачка и датумот на последната нарачка. || `customer_order`, `customer_loyalty`, `customer`, `company`, `api_user`, `customer_loyalty_status`, `loyalty_tier` || Статистиката се пресметува по клиент и ги опфаќа сите статуси на нарачки. Се прикажуваат членовите на програмата за лојалност, вклучувајќи ги и оние без нарачки. ||
     40||= Група ||= Главен поглед ||= Табели и колони ||
     41|| [wiki:OrdersFullIndex v_orders_full_index] || [wiki:OrdersFullView v_orders_full] || `company_order(company_id)`, `customer_order(comp_order_id)`, `order_meal(order_id, meal_id)`, `order_drink(order_id, drink_id)` ||
     42|| [wiki:DriverDeliveriesIndex v_driver_deliveries_index] || [wiki:DriverDeliveriesView v_driver_deliveries] || `delivery(driver_user_id, delivery_date)` ||
     43|| [wiki:ContractsRevenueIndex v_contracts_revenue_index] || [wiki:ContractsRevenueView v_contracts_revenue] || `contract(company_id, rest_id)` ||
    4044
    41 === Термини за ручек
     45За останатите шест погледи не се додава посебно дополнително индексирање. Времето на SELECT прашалниците е прифатливо за редовното користење.
    4246
    43 Погледот го поврзува распоредот за ручек со доставувачите на соодветниот ресторан.
     47== Резултати од тестирањето ==
    4448
    45 ||= Поглед ||= Цел ||= Изворни табели / погледи ||= Забелешки ||
    46 || [wiki:DriverLunchTimersView v_driver_lunch_timers] || Ги поврзува термините за ручек со договорите, компаниите, рестораните и доставувачите. || `lunch_time`, `contract`, `company`, `restaurant`, `driver`, `api_user` || Се добива ред за секој термин и секој доставувач на ресторанот. Погледот не го ограничува резултатот на назначениот доставувач и не филтрира активни договори или денови. Термините за ресторани без доставувачи не се прикажуваат. ||
     49=== SELECT ===
    4750
    48 == Индекси
     51||= Поглед ||= Пред индексирање (ms) ||= По индексирање (ms) ||
     52|| [wiki:OrdersFullView v_orders_full] || 2598 || 2591 ||
     53|| [wiki:DriverDeliveriesView v_driver_deliveries] || околу 70000 || 48236 ||
     54|| [wiki:ContractsRevenueView v_contracts_revenue] || 2555 || 1966 ||
    4955
    50 Индексите се поврзани со изворните табели и го поддржуваат пребарувањето по компанија, клиент, ресторан, доставувач и нарачка. Еден индекс може да се користи од повеќе погледи.
     56Кај нарачките разликата е 7 ms, односно 0,3%. Кај договорите времето е пократко за 589 ms, односно 23,1%, при резултат од нула редови во двата теста.
    5157
    52 Примарните клучеви и уникатните ограничувања обезбедуваат основни индекси за идентификација и поврзување на записите. Дополнителните индекси ги поддржуваат почестите пребарувања и групирања.
     58Кај доставите споредбата е ориентациска: околу 70 секунди за 200 редови се споредуваат со вкупно 48236 ms од статистика за две наредби.
    5359
    54 === Индекси за мени
     60=== INSERT и UPDATE ===
    5561
    56 ||= Област ||= Индекси ||= Поддржани погледи ||= Забелешки ||
    57 || [wiki:MenuMealIndex Мени со јадења] || `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 || Мени со пијалоци || Основни и заеднички индекси || `v_menu_drink` || Нема дополнителен индекс. `restaurant(rest_id)` е примарен клуч, а `drink(rest_id, drink_name)` веќе има `UNIQUE` индекс. ||
     62Тестирани се девет табели со по еден INSERT и еден UPDATE. Сите 18 операции се успешни и враќаат по еден ред. Execute и Fetch времињата се наведени на страницата на соодветниот поглед. По мерењето промените се вратени со ROLLBACK.
    5963
    60 === Индекси за нарачки, достави и рецензии
     64Execute е времето прикажано во DBeaver, а Fetch вредностите се од дополнетата евиденција. Овие мерења не се споредба на INSERT и UPDATE пред и по индексирање.
    6165
    62 ||= Област ||= Индекси ||= Поддржани погледи ||= Забелешки ||
    63 || [wiki:OrdersFullIndex Нарачки] || `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` || Заеднички индекси за пронаоѓање компаниски и клиентски нарачки и за поврзување на јадењата и пијалоците по нарачка. Пребарувањата по доставувач и клиент се поддржани и со индексите за достави и лојалност. ||
    64 || [wiki:DriverDeliveriesIndex Достави] || `delivery(driver_user_id, delivery_date)` || `v_driver_deliveries`, `v_orders_full`, `v_reviews_full` || Пребарување по доставувач и датум. Се користат и заедничките индекси за нарачки и за поврзување на доставувачите со рестораните. ||
    65 || [wiki:ReviewsFullIndex Рецензии] || Основни и заеднички индекси || `v_reviews_full` || Нема дополнителен индекс. Врските преку `review_id`, `order_id` и `delivery_id` се покриени со примарни и уникатни клучеви. Се користат и заедничките индекси за нарачки, достави и клиенти. ||
     66== Извештај во PDF ==
    6667
    67 === Индекси за договори, фактурирање, лојалност и термини
    68 
    69 ||= Област ||= Индекси ||= Поддржани погледи ||= Забелешки ||
    70 || [wiki:ContractsRevenueIndex Договори и приходи] || `contract(company_id, rest_id)` || `v_contracts_revenue`, `v_company_billing_overview` || Водечката колона `company_id` поддржува и групирање на договорите за фактурирање. Истиот индекс поддржува пребарување само по компанија. За нарачките се користат заедничките индекси. ||
    71 || [wiki:CompanyBillingOverviewIndex Фактурирање] || Основни и заеднички индекси || `v_company_billing_overview` || Нема дополнителен индекс. Ги користи заедничките индекси `company_order(company_id)`, `customer_order(comp_order_id)` и `contract(company_id, rest_id)`. `invoice(comp_order_id)` веќе има `UNIQUE` индекс. ||
    72 || [wiki:CustomerLoyaltyFullIndex Лојалност на клиентите] || `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 Термини за ручек] || `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 === Споредба и заклучок во PDF формат
    77 
    78 [attachment:Izveshtaj_indeksiranje_pogledi.pdf]
     68[attachment:Izveshtaj_indeksiranje_pogledi.pdf Споредба и заклучок во PDF формат]