Changes between Version 16 and Version 17 of QueryOptimization
- Timestamp:
- 06/10/26 14:28:10 (10 days ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
QueryOptimization
v16 v17 1 1 2 = Документација за оптимизација2 == Документација за оптимизација 3 3 [[html(<a href="https://develop.finki.ukim.mk/projects/BeautyBook/attachment/wiki/QueryOptimization/views_optimization_documentation.pdf">views_optimization_documentation.pdf</a>)]] 4 4 5 = Погледи6 7 == v_staff_daily_schedule5 == Погледи 6 7 === v_staff_daily_schedule 8 8 9 9 Овој view служи за приказ на дневниот распоред на вработените. … … 34 34 Функцијата `LEAD()` пресметува временски јаз помеѓу два последователни термини без дополнителни self-join операции. 35 35 36 --- 37 38 == v_staff_open_slots 36 37 === v_staff_open_slots 39 38 40 39 Овој view ги враќа сите слободни термини за закажување. … … 80 79 се задржуваат само реално достапните слотови. 81 80 82 --- 83 84 == v_companies_by_category 81 === v_companies_by_category 85 82 86 83 Овој view овозможува пребарување компании според категорија и услуги. … … 104 101 На овој начин главниот SELECT работи со значително помал број редови. 105 102 106 --- 107 108 == v_staff_service_menu 103 === v_staff_service_menu 109 104 110 105 Овој view прикажува кои услуги ги нуди секој вработен. … … 126 121 Ова значително ја намалува количината на податоци бидејќи не се анализираат активни или откажани термини. 127 122 128 --- 129 130 == v_monthly_revenue_by_company 123 === v_monthly_revenue_by_company 131 124 132 125 Овој view служи за финансиски извештаи. … … 149 142 се пресметуваат во една единствена GROUP BY операција. 150 143 151 --- 152 153 == v_future_appointments_client_o 144 145 === v_future_appointments_client_o 154 146 155 147 Овој view ги враќа идните термини на клиентите. … … 171 163 172 164 {{{ 173 idx_appointment_client_future 165 idx_appointment_client_future on appointment(client_id,appointment_date) 174 166 }}} 175 167 176 168 бидејќи пребарувањето најчесто се врши според клиент и датум. 177 169 178 --- 179 180 == v_client_dashboard 170 === v_client_dashboard 181 171 182 172 Овој view е наменет за почетниот екран на клиентот. … … 195 185 196 186 Ова е поефикасно отколку секој пат да се пресметуваат агрегатите за секој клиент одново. 197 198 --- 199 200 == mv_staff_avg_rating 201 202 Ова е Materialized View. 187 За овој view помага веќе креираниот индекс за погледот v_future_appointments_client_o: 188 {{{ 189 idx_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 {{{ 200 mv_staff_avg_rating 201 }}} 202 203 што значително го намалува времето на извршување. 204 205 Дополнително се користат два `LATERAL JOIN`: 206 207 * агрегирање на услуги 208 * агрегирање на улоги 209 210 Само активни корисници учествуваат во резултатот: 211 212 {{{ 213 WHERE u.is_active = TRUE 214 }}} 215 216 ==== mv_staff_avg_rating 217 218 Ова е помошно Materialized View за погледот v_staff_profile_m. 203 219 204 220 Наместо просечниот рејтинг да се пресметува секој пат кога се отвора профил на вработен, резултатот однапред се чува физички во базата. … … 218 234 што овозможува истовремено користење на податоците. 219 235 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 248 238 249 239 Овој view е најдеталниот финансиски поглед. … … 261 251 Овој пристап е поефикасен од глобални GROUP BY операции над целата база. 262 252 263 ---264 253 265 254 == Индекси
