Перейдите к следующему слайду, нажав кнопку Вправо
Подготовлено онлайн-курсом
id поста | Заголовок поста | Текст поста |
---|---|---|
1 | Как заработать деньги | Нужно много работать... |
2 | Я заработал много денег | Я просто много работал!.. |
3 | Как поверить в себя | Работайте над собой... |
4 | Нужна-ли работа? | Определённо нужна... |
SQL не может вернуть из БД сразу много лайков для одного поста, поэтому он дублирует каждый пост по количеству лайков.
id поста | Заголовок поста | Текст поста | Лайк |
---|---|---|---|
1 | Как заработать деньги | Нужно много работать... | user id14 |
1 | Как заработать деньги | Нужно много работать... | user id45 |
1 | Как заработать деньги | Нужно много работать... | user id67 |
1 | Как заработать деньги | Нужно много работать... | user id645 |
... | ... | ... | ... |
2 | Я заработал много денег | Я просто много работал!.. | user id24 |
... | ... | ... | ... |
Вызов Count сворачивает эту структуру, оставляя от колонки с лайками только числа — количество лайков. Но промежуточная структура данных всё же создается внутри БД и поглощает море вычислительных ресурсов.
Два annotate порождают неимоверное количество записей для каждого поста: количество лайков умножается на количество комментариев. Это очень ресурсоёмко.
Подсчёт количества лайков вернет неверное число, если забыть добавить distinct=True. Оба annotate вернут число равное количеству лайков умноженному на количество комментариев.
id поста | Заголовок поста | Текст поста | Лайк | Комментарий |
---|---|---|---|---|
1 | Как заработать деньги | Нужно много работать... | user id14 | автор id14 |
1 | Как заработать деньги | Нужно много работать... | user id14 | автор id89 |
1 | Как заработать деньги | Нужно много работать... | user id14 | автор id53 |
... | ... | ... | ... | |
1 | Как заработать деньги | Нужно много работать... | user id45 | автор id831 |
1 | Как заработать деньги | Нужно много работать... | user id45 | автор id39 |
... | ... | ... | ... |