Changes between Version 6 and Version 7 of Optimization
- Timestamp:
- 06/14/26 20:47:37 (8 days ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Optimization
v6 v7 72 72 Со овој индекс времето се намали од **429.479 ms** на **1.090 ms**. Индексот е многу корисен бидејќи прашалникот најчесто бара само достапни термини, па нема потреба да се пребаруваат сите термини во табелата `time_slot`. 73 73 74 == 3. Анализа на поглед review_summary, краток преглед на рецензии за бизнис == 75 76 Овој поглед се користи за прикажување на резиме за рецензии на одреден бизнис. Во апликацијата ова може да се користи на страната на бизнисот, каде што се прикажува просечна оценка, број на рецензии или распределба на оценки. 77 78 Прашалникот кој го тестираме е: 79 80 {{{ 81 EXPLAIN ANALYZE 82 SELECT * 83 FROM review_summary 84 WHERE business_id = 1; 85 }}} 86 87 === Време на извршување без индекс: 88 89 **627.643 ms** 90 91 Бидејќи прашалникот филтрира според `business_id`, а во погледот се користи и `rating`, креираме сложен индекс врз двете колони. 92 93 {{{ 94 CREATE INDEX IF NOT EXISTS idx_review_business_rating_summary 95 ON review(business_id, rating); 96 97 ANALYZE review; 98 }}} 99 100 === Време на извршување со индекс: 101 102 **29.151 ms** 103 104 Со додавање на индексот времето се намали од **627.643 ms** на **29.151 ms**. Индексот овозможува побрзо групирање и филтрирање на рецензиите за конкретен бизнис, бидејќи податоците се организирани според `business_id` и `rating`. 105 106 == 4. Анализа на поглед review_details, детални рецензии според оценка == 74 == 3. Анализа на поглед review_details, детални рецензии според оценка == 107 75 108 76 Овој поглед се користи кога сакаме да ги прикажеме рецензиите кои имаат одредена оценка, на пример сите рецензии со оценка 5. Ова може да се користи за филтрирање на рецензии во корисничкиот интерфејс. … … 136 104 Со додавање на индексот времето се намали од **800.553 ms** на **340.962 ms**. Подобрувањето е забележливо, но не е толку големо како кај претходните прашалници, бидејќи вредноста `rating = 5` може да се појавува кај голем број редици. Во таков случај индексот помага, но сепак мора да се прочита голем дел од табелата. 137 105 138 == 5. Анализа на поглед customer_profile_view, профил на корисник со негови активности ==106 == 4. Анализа на поглед customer_profile_view, профил на корисник со негови активности == 139 107 140 108 Овој поглед се користи за прикажување на профил на корисник, каде што можат да се прикажат неговите резервации, рецензии и други информации поврзани со активностите во системот. … … 178 146 Овој индекс може да биде корисен доколку во погледот или во прашалниците често се користи сортирање или филтрирање според `created_at`. Во конкретниот тест, главното подобрување е постигнато со индексот врз `review(customer_id, rating)`. 179 147 180 == 6. Анализа на поглед reschedule_overview, преглед на барања за промена на термин ==148 == 5. Анализа на поглед reschedule_overview, преглед на барања за промена на термин == 181 149 182 150 Овој поглед се користи за прикажување на барања за презакажување на термини. Во апликацијата ова би се користело од страна на бизнисот или вработениот за да ги види барањата кои се во статус `pending`. … … 228 196 }}} 229 197 230 == 7. Влијание на индексите врз insert/update операции ==198 == 6. Влијание на индексите врз insert/update операции == 231 199 232 200 Иако индексите значително го подобруваат читањето на податоците, тие можат да имаат мало влијание врз операциите за внесување и ажурирање. Причината е тоа што при секој `INSERT`, `UPDATE` или `DELETE`, базата мора да ги ажурира и индексите, не само главната табела. … … 270 238 Очекувано е индексите да внесат мал трошок при запишување, но бидејќи главните сценарија во апликацијата се пребарување на слободни термини, преглед на резервации и читање на рецензии, добивката кај `SELECT` прашалниците е многу поголема од потенцијалниот трошок кај `INSERT` и `UPDATE`. 271 239 272 == 8. Заклучок ==240 == 7. Заклучок == 273 241 274 242 Со додавање на соодветни индекси успеавме значително да ги подобриме перформансите на најважните прашалници во системот Rezervo. … … 279 247 || customer_appointments_view || 644.544 ms || 2.756 ms || 280 248 || available_slots || 429.479 ms || 1.090 ms || 281 || review_summary || 627.643 ms || 29.151 ms ||282 249 || review_details || 800.553 ms || 340.962 ms || 283 250 || customer_profile_view || 708.985 ms || 0.767 ms ||
