Changes between Version 16 and Version 17 of QueryOptimization


Ignore:
Timestamp:
06/10/26 14:28:10 (10 days ago)
Author:
231040
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • QueryOptimization

    v16 v17  
    11
    2 = Документација за оптимизација
     2== Документација за оптимизација
    33[[html(<a href="https://develop.finki.ukim.mk/projects/BeautyBook/attachment/wiki/QueryOptimization/views_optimization_documentation.pdf">views_optimization_documentation.pdf</a>)]]
    44
    5 = Погледи
    6 
    7 == v_staff_daily_schedule
     5== Погледи
     6
     7=== v_staff_daily_schedule
    88
    99Овој view служи за приказ на дневниот распоред на вработените.
     
    3434Функцијата `LEAD()` пресметува временски јаз помеѓу два последователни термини без дополнителни self-join операции.
    3535
    36 ---
    37 
    38 == v_staff_open_slots
     36
     37=== v_staff_open_slots
    3938
    4039Овој view ги враќа сите слободни термини за закажување.
     
    8079се задржуваат само реално достапните слотови.
    8180
    82 ---
    83 
    84 == v_companies_by_category
     81=== v_companies_by_category
    8582
    8683Овој view овозможува пребарување компании според категорија и услуги.
     
    104101На овој начин главниот SELECT работи со значително помал број редови.
    105102
    106 ---
    107 
    108 == v_staff_service_menu
     103=== v_staff_service_menu
    109104
    110105Овој view прикажува кои услуги ги нуди секој вработен.
     
    126121Ова значително ја намалува количината на податоци бидејќи не се анализираат активни или откажани термини.
    127122
    128 ---
    129 
    130 == v_monthly_revenue_by_company
     123=== v_monthly_revenue_by_company
    131124
    132125Овој view служи за финансиски извештаи.
     
    149142се пресметуваат во една единствена GROUP BY операција.
    150143
    151 ---
    152 
    153 == v_future_appointments_client_o
     144
     145=== v_future_appointments_client_o
    154146
    155147Овој view ги враќа идните термини на клиентите.
     
    171163
    172164{{{
    173 idx_appointment_client_future
     165idx_appointment_client_future on appointment(client_id,appointment_date)
    174166}}}
    175167
    176168бидејќи пребарувањето најчесто се врши според клиент и датум.
    177169
    178 ---
    179 
    180 == v_client_dashboard
     170=== v_client_dashboard
    181171
    182172Овој view е наменет за почетниот екран на клиентот.
     
    195185
    196186Ова е поефикасно отколку секој пат да се пресметуваат агрегатите за секој клиент одново.
    197 
    198 ---
    199 
    200 == mv_staff_avg_rating
    201 
    202 Ова е Materialized View.
     187За овој view помага веќе креираниот индекс за погледот v_future_appointments_client_o:
     188{{{
     189idx_appointment_client_future on appointment(client_id,appointment_date)
     190}}}
     191
     192
     193=== v_staff_profile_m
     194
     195Овој view прикажува целосен профил на вработен.
     196
     197Наместо повторно да се пресметуваат оценки од `review`, се користи:
     198
     199{{{
     200mv_staff_avg_rating
     201}}}
     202
     203што значително го намалува времето на извршување.
     204
     205Дополнително се користат два `LATERAL JOIN`:
     206
     207* агрегирање на услуги
     208* агрегирање на улоги
     209
     210Само активни корисници учествуваат во резултатот:
     211
     212{{{
     213WHERE u.is_active = TRUE
     214}}}
     215
     216==== mv_staff_avg_rating
     217
     218Ова е помошно Materialized View за погледот v_staff_profile_m.
    203219
    204220Наместо просечниот рејтинг да се пресметува секој пат кога се отвора профил на вработен, резултатот однапред се чува физички во базата.
     
    218234што овозможува истовремено користење на податоците.
    219235
    220 ---
    221 
    222 == v_staff_profile_m
    223 
    224 Овој view прикажува целосен профил на вработен.
    225 
    226 Наместо повторно да се пресметуваат оценки од `review`, се користи:
    227 
    228 {{{
    229 mv_staff_avg_rating
    230 }}}
    231 
    232 што значително го намалува времето на извршување.
    233 
    234 Дополнително се користат два `LATERAL JOIN`:
    235 
    236 * агрегирање на услуги
    237 * агрегирање на улоги
    238 
    239 Само активни корисници учествуваат во резултатот:
    240 
    241 {{{
    242 WHERE u.is_active = TRUE
    243 }}}
    244 
    245 ---
    246 
    247 == v_invoice_detail_o
     236
     237=== v_invoice_detail_o
    248238
    249239Овој view е најдеталниот финансиски поглед.
     
    261251Овој пристап е поефикасен од глобални GROUP BY операции над целата база.
    262252
    263 ---
    264253
    265254== Индекси