| | 125 | ==== Materialized Views ==== |
| | 126 | За дополнителна оптимизација беа креирани materialized views за често користени статистички податоци како просечна оцена, број на прегледи и број на омилени рецепти. |
| | 127 | |
| | 128 | Користени materialized views: |
| | 129 | * recipe_reviews_mv |
| | 130 | * recipe_views_mv |
| | 131 | * recipe_favorites_mv |
| | 132 | |
| | 133 | Оптимизација: |
| | 134 | {{{ |
| | 135 | CREATE MATERIALIZED VIEW recipe_reviews_mv AS |
| | 136 | SELECT |
| | 137 | recipe_id, |
| | 138 | recipe, |
| | 139 | AVG(rating) AS average_rating, |
| | 140 | COUNT(id) AS total_reviews |
| | 141 | FROM recipe_reviews_view |
| | 142 | GROUP BY recipe_id, recipe; |
| | 143 | |
| | 144 | CREATE MATERIALIZED VIEW recipe_views_mv AS |
| | 145 | SELECT |
| | 146 | recipe_id, |
| | 147 | recipe, |
| | 148 | COUNT(user_id) AS total_views |
| | 149 | FROM recipe_views_view |
| | 150 | GROUP BY recipe_id, recipe; |
| | 151 | |
| | 152 | CREATE MATERIALIZED VIEW recipe_favorites_mv AS |
| | 153 | SELECT |
| | 154 | recipe_id, |
| | 155 | recipe, |
| | 156 | COUNT(user_id) AS total_favorites |
| | 157 | FROM user_favorites_view |
| | 158 | GROUP BY recipe_id, recipe; |
| | 159 | }}} |
| | 160 | |
| | 161 | Заклучок: |
| | 162 | Materialized views овозможуваат побрзо прикажување на агрегирани податоци бидејќи резултатите се зачувуваат физички во базата и не се пресметуваат повторно при секое извршување. |
| | 163 | |
| | 164 | |