Как правильно подсчитывать количество отзывов о товаре?
Пользователи могут оставлять отзывы о товаре. В списке товаров должно отображаться количество отзывов у товара. Будет отдельная таблица в БД для отзывов, связанная внешним ключом с товаром. Будет лучше завести отдельное поле у таблицы товаров и инкрементировать его при каждом новом отзыве или же каждый раз отдельным запросом считать количество отзывов у товара? Как лучше сделать? Можно ли использовать любой из вариантов?
Первый вариант - отдельное поле.
Его можно и сразу инкрементировать, и это будет удобно при переподсчётах в фоновом режиме. При выводе достаточно будет просто прочитать это поле.
Второй способ с подсчётом на лету сразу отбрасываем - это лишняя нагрузка
kiron278, второй вариант не исключается, но это плохая практика. Лучше так не делать.
При небольших нагрузках работать будет. Но когда-нибудь настанет момент, когда это станет узким местом и придётся переписывать на первый вариант. Надо делать правильно сразу.
Отдельное поле в таблице товаров.
На таблицу с отзывами вешать триггер, на случай добавления и удаления записи, который будет менять значение `count` в таблице товара.