= Профилирање и оптимизација на извршување на прашалниците ---- == Сценарио бр. 1 - Поглед за 20 најпродавани продукти на неделно ниво [[Image("Image1.JPG",80%,align=center)]]\\ ---- {{{#!html
Анализа на прашалникот пред партиционирање
}}} [[Image("Image2.JPG",80%,align=center)]]\\ ---- {{{#!html
Време на извршување на прашалникот пред партиционирање
}}} [[Image("Image3.JPG",80%,align=center)]]\\ ---- * Креирање на нова табела за нарачки, префрлување на податоци од старата табела за нарачки и креирање на две партиции за новата табела * Во првата партиција ќе се наоѓаат нарачките на неделно ниво (за секоја недела), а во втората партиција сите нарачки од минатото * **Во табелата за нарачки се наоѓаат податоци до декември 2023 година, затоа и партициите се направени за тие датуми** [[Image("Image4.JPG",80%,align=center)]]\\ ---- {{{#!html
Рекреирање на погледот за најпродаваните 20 продукти на неделно ниво
}}} [[Image("Image5.JPG",80%,align=center)]]\\ ---- {{{#!html
Анализа на прашалникот после партиционирање
}}} [[Image("Image6.JPG",80%,align=center)]]\\ ---- {{{#!html
Време на извршување на прашалникот после партиционирање
}}} [[Image("Image7.JPG",80%,align=center)]]\\ ---- * Додавање на индекс на колоната ‘id’ во новата табела за нарачки и исклучување на SEQ SCAN кај PostgreSQL Query Planner ** Целта на исклучување на SEQ SCAN е да го натерате Query Planner-от да ги користи индексите [[Image("Image8.JPG",80%,align=center)]]\\ ---- {{{#!html
Анализа на прашалникот после додавање на индексот
}}} [[Image("Image9.JPG",80%,align=center)]]\\ ---- {{{#!html
Време на извршување на прашалникот после додавање на индексот
}}} [[Image("Image10.JPG",80%,align=center)]]\\ ---- * Функција со помош на која ќе се извршува префрлување на нарачките од партицијата за тековната недела во партицијата за нарачки за минатото * Оваа функција ќе се извршува на неделно ниво за да се префрлат нарачките од неделата која што завршува * Функцијата ќе се повикува автоматски преку Task Scheduler [[Image("Image11.JPG",80%,align=center)]]\\ ---- * Правилно креирање на партиции * Во претходниот пример, партициите се креирани на тој начин затоа што сите податоци за нарачки се за претходните години * Префрлување на податоци од партиција во партиција не би работело, затоа што во втората партиција (за нарачки во минатото) можеме да додаваме нарачки до крај на 2023 година (така е специфицирано во партицијата) * На ваков начин, првата партиција ќе ги има сите нарачки за тековната недела, додека пак втората партиција би ги имала сите нарачки за датуми помали од тековната недела, меѓутоа не специфицираме точно до кој датум, туку проверките ќе се вршат врз основа на CURRENT_DATE што го зима точниот моментален датум во реално време [[Image("Image12.JPG",80%,align=center)]]\\