Ефективность подсчета формул в SQL-е.
Уважаемые знатоки HighLoad-a
Вопрос у меня следующий
Пишу плагин который будет заниматься пользовательскими рейтингами. соху офигенными формулами и алгоритмами.
Но суть не в этом. В плагине есть простой метод подсчета посещений\кол-ва коментариев\голосов
И я незнаю как его лучше реализовать через SQL или через отдельные формулы. Пример:
Подсчет количества посещений:
Вариант1:
Вариант №2:
в маппере:
Так вот, какой код будет лучше с точки зрения ефективонсти?
Вопрос у меня следующий
Пишу плагин который будет заниматься пользовательскими рейтингами. с
Но суть не в этом. В плагине есть простой метод подсчета посещений\кол-ва коментариев\голосов
И я незнаю как его лучше реализовать через SQL или через отдельные формулы. Пример:
Подсчет количества посещений:
Вариант1:
$count = oTopic->getViewCount();
$count += 1;
$oTopic->setViewCount($count);
$this->Topic_UpdateTopic($oTopic);
Вариант №2:
$this->Topic_UpdateTopicCount($oTopic)
в маппере:
$sql = "UPDATE topic_rating SET count = count+1 where topic_id = ?d"
$this->oDb->query($sql,oTopic->getId())
Так вот, какой код будет лучше с точки зрения ефективонсти?
13 комментариев
если же топик существует уже и вы просто обновляете его, то никакой разницы нет — и там и там всего один запрос.
т.е. полюбому ВАриант 2?
вариант был бы верным если бы вы пересохраняли топики, т.е. сначала получали (запрос №1), потом обновляли (запрос №2).
вариант 2 был бы верным
Если брать пример с топиком то второй будет быстрее, потому что апдейт топика тянет за собой еще дополнительные проверки, выборку топика еще раз, пусть и из кэша.