| | 190 | == View 8: Аналитика на производи по клиент == |
| | 191 | |
| | 192 | '''Примарен филтер''' за погледот vw_klient_engagement ќе биде според klient_id, односно според клиентот за кој се пресметува бројот на активни банкарски производи. Овој поглед може да се користи и за анализа на клиенти според број на сметки или број на договори. |
| | 193 | |
| | 194 | |
| | 195 | Овој поглед ќе '''се користи за''' аналитика на клиентска активност во банкарскиот систем. Преку него се прикажува клиентот, неговото име и презиме, бројот на сметки и бројот на договори што ги има. Овој поглед е корисен за банката кога сака да види колку еден клиент е активен и колку производи користи. |
| | 196 | |
| | 197 | |
| | 198 | |
| | 199 | '''Иницијалното време''' за извршување на погледот без дополнителен индекс изнесува 68 ms. Вкупно време од 404 ms, но од тоа 68 ms е реалното execution време, додека 336 ms се однесуваат на fetching, односно преземање и прикажување на резултатите. Затоа како релевантно време за базата се зема execution времето од 68 ms. Ова време е прифатливо за апликацијата, особено затоа што погледот врши агрегирање и броење на поврзани записи. |
| | 200 | |
| | 201 | [[Image(view8.png, width=800)]] |
| | 202 | |
| | 203 | Од графичкиот план на извршување може да се забележи дека PostgreSQL користи Aggregate операција, бидејќи погледот пресметува број на сметки и број на договори. Дополнително, во планот се гледа Index Scan на табелата klient, а за поврзаните табели се користат операции за спојување со smetka и dogovor. Иако во планот може да се забележат Full Scan операции на smetka и dogov or, времето на извршување е доволно мало. Бидејќи погледот враќа само еден клиент и пресметува мал број агрегирани вредности, нема потреба од задолжително индексирање во моменталната состојба. |
| | 204 | |
| | 205 | |
| | 206 | |
| | 207 | [[Image(view8.1.png, width=800)]] |
| | 208 | |
| | 209 | [[Image(view8.2.png, width=800)]] |
| | 210 | |
| | 211 | |
| | 212 | Нема потреба да се преуредува прашалникот. |
| | 213 | |
| | 214 | |
| | 215 | Времето на извршување на операциите останува исто. |
| | 216 | |
| | 217 | |
| | 218 | |
| | 219 | == View 9: Преглед на налози / плаќања по клиент == |
| | 220 | |
| | 221 | '''Примарен филтер''' за погледот vw_nalozi_klienti ќе биде според klient_id, односно според клиентот кој е налогодавач на плаќањето. Дополнително, погледот може да се користи и за пребарување според smetka_nalogodavac_id, бидејќи налозите се поврзани и со конкретна сметка од која се врши плаќањето. |
| | 222 | |
| | 223 | |
| | 224 | Овој поглед ќе '''се користи за''' преглед на налози, односно плаќања направени од клиент. Преку него се прикажуваат износот на плаќањето, целта на плаќањето, датумот на валута, клиентот налогодавач и сметката од која е направено плаќањето. Овој поглед е важен затоа што налозите и плаќањата се една од најчесто користените функционалности во банкарскиот систем. |
| | 225 | |
| | 226 | |
| | 227 | '''Иницијалното време''' за извршување на погледот без дополнителен индекс изнесува 4 s 127 ms. Вкупно време од 4 s 468 ms, од кое 4 s 127 ms е реалното execution време, додека 341 ms се однесуваат на fetching. Бидејќи execution времето е над 4 секунди, ова не е прифатливо време за апликацијата и има потреба од оптимизација. |
| | 228 | |
| | 229 | [[Image(view9.png, width=800)]] |
| | 230 | |
| | 231 | |
| | 232 | Од графичкиот план на извршување може да се забележи дека најбавната операција е Full Scan / Seq Scan на табелата nalog. Табелата nalog има голем број записи, а пребарувањето се прави според nalogodavac_id = 50000. Бидејќи нема соодветен индекс, PostgreSQL мора да ја пребара целата табела за да ги пронајде налозите на конкретниот клиент. Ова покажува дека колоната nalogodavac_id е главен кандидат за индексирање. Дополнително, бидејќи погледот се поврзува и преку smetka_nalogodavac_id, корисен е и индекс на таа колона. |
| | 233 | |
| | 234 | |
| | 235 | [[Image(view9.1.png, width=800)]] |
| | 236 | [[Image(view9.2.png, width=800)]] |
| | 237 | |
| | 238 | |
| | 239 | Времето изминато во извршување на query-то со индекси изнесува 406ms, и тоа е прифатливо време. |
| | 240 | |
| | 241 | |
| | 242 | [[Image(view9.3.png, width=800)]] |
| | 243 | [[Image(view9.4.png, width=800)]] |
| | 244 | |
| | 245 | Времето изминато во извршување на операциите insert и update по индексирање изнесува: |
| | 246 | |
| | 247 | [[Image(view9.5.png, width=800)]] |
| | 248 | |