Changes between Version 1 and Version 2 of QueryOptimization
- Timestamp:
- 06/12/26 20:10:15 (4 days ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
QueryOptimization
v1 v2 1 1 = Фаза 3: Индекси и оптимизација на прашалници = 2 3 ''' Проект: Traffic Violation Management System (V-TRACK) ''' 2 4 3 5 ''' Членови на тимот ''' … … 154 156 }}} 155 157 156 '''Explain план (пред / по индекс):''' 158 '''Без индекс'''[[BR]] 159 време на извршување: 6m4s 157 160 [[Image(view1.png, 700px)]] 161 162 '''По додавање на индекс'''[[BR]] 163 време на извршување: ~133ms 158 164 [[Image(vew1-index.png, 700px)]] 159 160 '''Времиња на извршување:'''161 * SELECT: 6m4s → '''~133ms'''162 * INSERT: 1,699s → '''0,066s'''163 * UPDATE: 0,081s → '''0,055s'''164 165 165 166 === Поглед 2 — v_zapisnici_detalno === … … 170 171 }}} 171 172 172 '''Explain план (пред / по индекс):''' 173 '''Без индекс'''[[BR]] 174 време на извршување: 5m59s 173 175 [[Image(view2.png, 700px)]] 176 177 '''По додавање на индекс'''[[BR]] 178 време на извршување: ~154ms 174 179 [[Image(view2-index.png, 700px)]] 175 176 '''Времиња на извршување:'''177 * SELECT: 5m59s → '''~154ms'''178 * INSERT: 3,962s → '''0,230s'''179 * UPDATE: 3,950s → '''0,053s'''180 180 181 181 === Поглед 3 — v_neplateni_kazni === 182 182 Најбавна операција: `Seq Scan on uplata`. Join-условот (`u.id_zapisnik = z.id_na_zapisnik`) е ист како кај Поглед 2, '''па не е потребен нов индекс''' — се реискористува постоечкиот `idx_uplata_id_zapisnik`. 183 183 184 '''Explain план (пред / по индекс):''' 184 '''Без индекс'''[[BR]] 185 време на извршување: 6,922s 185 186 [[Image(view3.png, 700px)]] 187 188 '''По додавање на индекс'''[[BR]] 189 време на извршување: ~121ms 186 190 [[Image(view3-index.png, 700px)]] 187 188 '''Времиња на извршување:'''189 * SELECT: 6,922s → '''~121ms'''190 * INSERT: 0,153s → '''0,134s'''191 * UPDATE: 1,990s → '''0,031s'''192 191 193 192 === Поглед 4 — v_povtoreni_prekrsoci === 194 193 Аналитички поглед. План: `GROUP BY` / `HashAggregate` над цела `Zapisnik` — агрегацијата ги поминува сите редови, индекс не помага. Решение — '''материјализиран поглед'''; INSERT/UPDATE на основните табели остануваат исти. 195 194 196 '''Explain план:'''197 195 [[Image(view4.png, 700px)]] 198 196 … … 202 200 Аналитички поглед. План: агрегација (`COUNT`, `MIN`, `MAX`) групирана по полицаец над цела `Zapisnik` — индекс не носи добивка. Решение — '''материјализиран поглед''' со периодично освежување. 203 201 204 '''Explain план:'''205 202 [[Image(view5.png, 700px)]] 206 203 … … 210 207 Аналитички поглед. План: две одделни агрегации (над `Zapisnik`/`Stavka_Zapisnik` и над `Uplata`) па join — двете страни се скенираат во целост. Решение — '''материјализиран поглед''' со периодично освежување. 211 208 212 '''Explain план:'''213 209 [[Image(view6.png, 700px)]] 214 210
