Я использую MySQL (MyISAM) 5.0.41, и у меня есть этот запрос:
SELECT `x`.`items`.id, `x`.`items`.name, COUNT(*) AS count
FROM `x`.`items` INNER JOIN `x`.`user_items`
ON `x`.`items`.id = `x`.`user_items`.item_id
GROUP BY name HAVING count > 2 ORDER BY count DESC
У меня около 36 000 пользователей, 175 000 user_items и 60 000 элементов, которые постоянно добавляются. Так что этот запрос становится немного медленным ...
Лучше ли:
- Иметь поле
count
в items
и периодически обновлять его (например, каждый раз, когда пользователь добавляет элемент)
- или выполните запрос вот так (медленно) ..
Или есть какой-нибудь SQL, который заполнит поле подсчета для меня?
Спасибо