Changes between Version 2 and Version 3 of AdvancedApplicationDesign_v2


Ignore:
Timestamp:
08/29/25 23:02:00 (8 days ago)
Author:
212028
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AdvancedApplicationDesign_v2

    v2 v3  
    1515join kazna kz on kz.kontrola_id = ko.kontrola_id
    1616group by godina, li.li_ime
    17 order by godina, li.li_ime desc;
     17order by godina, li.li_ime;
    1818
    1919}}}
     
    7878join vozenje v on v.inl_id = inl.inl_id
    7979group by godina, li.li_id, li.li_ime, li.li_pravec
    80 order by godina, li.li_id desc;
     80order by godina, li.li_id;
    8181
    8282}}}
     
    9999join linija li on li.li_id = pnl.li_id
    100100group by godina, p.p_ime, li.li_ime
    101 order by godina, broj_patnici desc;
     101order by godina, broj_patnici;
    102102
    103103}}}
     
    183183= Индексирање =
    184184
    185 
     185Прашалниците погоре служат за статистика и исвештаи преку годините.За истите за да не се извршуваат постојано резултатите од нив се складираат во материјализирани погледи.Ова го правиме за да се избегне прекумерно оптовораување на базата и исцрпување на ресурсите,имајќи во предвид дела податоците се на годишно ниво и обработката се извршива врз голем сет на податоци собрани за сите тие години.Иако веќе со ова се постигнува одредена оптимизација, за случаевите кога има потреба од обновување на податоците скалдирани во овие материјлизирани погледи може да воведеме индекси во веќе постоечките табели преку кои се доаѓа до овие материјализирани погледи за уште пооптимално извржување на прашалниците.Во прилог се индексите кои се воведуваат за секоја од табелите кој се дел од овие прашалници и причината за нивно воведување.
     186
     187==== Индекси за {{{Istanca na linija}}} табелата ====
     188
     189{{{#!div
     190{{{#!sql
     191create index idx_instancanalinija_li_id on instancanalinija (li_id);
     192}}}
     193}}}
     194
     195==== Индекси за {{{Kontroli}}} табелата ====
     196
     197{{{#!div
     198{{{#!sql
     199create index idx_kontroli_inl_id on kontroli (inl_id);
     200}}}
     201}}}
     202
     203==== Индекси за {{{Kazna}}} табелата ====
     204
     205{{{#!div
     206{{{#!sql
     207create index idx_kazna_kontrola_id on kazna (kontrola_id);
     208}}}
     209}}}
     210{{{#!div
     211{{{#!sql
     212create index idx_kazna_kz_datum_year on kazna (extract(year from kz_datum));
     213}}}
     214}}}
     215
     216==== Индекси за {{{Vozenje}}} табелата ====
     217
     218{{{#!div
     219{{{#!sql
     220create index idx_vozenje_inl_id on vozenje(inl_id);
     221}}}
     222}}}
     223{{{#!div
     224{{{#!sql
     225create index idx_vozenje_hour on vozenje(extract(year from vozenje_start));
     226}}}
     227}}}
    186228
    187229= Тригери и фукниции =
     
    237279{{{#!div
    238280{{{#!sql
    239 
     281create or replace function update_vozenje_on_line_instance_change() returns trigger as $$
     282begin
     283    -- update vozenje if inl_datum_end changed
     284    if new.inl_datum_end is distinct from old.inl_datum_end then
     285        update vozenje
     286        set end_date = new.inl_datum_end,
     287            status = 'finished'
     288        where inl_id = new.inl_id
     289        and status = 'active';
     290    end if;
     291
     292    return new;
     293end;
     294$$ language plpgsql;
     295
     296create or replace trigger update_vozenje_za_inl
     297after update of inl_datum_end on instancanalinija
     298for each row
     299execute function update_vozenje_on_line_instance_change();
    240300}}}
    241301}}}