= Оптимизација на прашалници и погледи = === 1. Анализа на поглед 1, добивање на бројот на следбеници и бројот на профили кои ги следи даден корисник === - Доколку сакаме да видиме за конкретен артист извршуваме: [[Image(View1_1.png, 800px)]] - Времето потребно за извршување за овој прашалник е **~6ms**. Нема потреба од дополнителни индекси. - Доколку сакаме да извршиме некаква анализа, на пример да ги земеме најдобрите 10 корисници според број на следбеници, можеме да извршиме: [[Image(View1_2.png, 800px)]] - Потребно време за извршување на овој прашалник е **~200ms**. Нема индекс кој може да се додаде за да ги подобри перформансите на овој прашалник. - Query plan: [[Image(View1_3.png, 800px)]] === 2. Анализа на поглед 2, најактивни корисници на платформата според бројот на слушања во изминатите 30 дена === - Доколку сакаме да видиме кои се најактивните корисници на платформата изминатите 30 дена, извршуваме: [[Image(View2_1.png, 800px)]] - Времето потребно за пребарување: [[Image(View2_2.png, 800px)]] - **~250ms** - Можеме да додадеме индекс на streamed_at колоната со цел да избегнеме sequential scan на song_streams табелата: [[Image(View2_3.png, 800px)]] - Време на извршување по додавање на индекс: [[Image(View2_4.png, 800px)]] - **~200ms** -> ~20% подобри перформанси === 3. Анализа на поглед 3, рангирање на песни по нивните просечни оценки и бројот на вкупни оценки, соодветно === - Доколку сакаме да ги видиме најдобро оценуваните песни на платформата, извршуваме: [[Image(View3_1.png, 800px)]] - Време потребно за пребарување: [[Image(View3_2.png, 800px)]] - **~260ms** - Можеме да додадеме индекс на song_id, grade со цел да избегнеме sequential scan на songs: [[Image(View3_3.png, 800px)]] - Време на извршување по додавање на индекс: [[Image(View3_4.png, 800px)]] - **~200ms** -> ~20% подобри перформанси - Време потребно за внесување на нов запис без индекс: [[Image(View3_5.png, 800px)]] [[Image(View3_6.png, 800px)]] - Со индекс: [[Image(View3_7.png, 800px)]] - Време потребно за ажурирање на запис без индекс: [[Image(View3_8.png, 800px)]] [[Image(View3_9.png, 800px)]] - Со индекс: [[Image(View3_10.png, 800px)]] - Во двата случаи (запишување и ажурирање) нема никаков ефект врз перформансите додавање на индексот