2015-12-19 2 views
3

Скажите, что у меня есть таблица с комментариями, каждый из разных пользователей, и я хочу подсчитать, сколько комментариев у каждого пользователя. Должен ли я иметь отдельную таблицу с подсчетом и обновлять ее при создании/удалении комментариев или я должен каждый раз запрашивать счет?Хранить количество строк в базе данных или динамически

Я чувствую, что последнее лучше, но я хочу получить более опытный материал по этому вопросу. Благодарю.

+1

Я рассуждал в своем ответе, потому что это немного субъективный вопрос. Оба являются хорошими решениями, но каждый раз пересчет каждый раз имеет очевидные последствия для производительности, основанные на вашей точной ситуации. Я предпочитаю хранить значения, а не вычислять их, но вы не можете - базы данных - это весело! :) – TwoStraws

ответ

2

Следуя добрым старым принципам YAGNI, я предлагаю вам перейти с самым простым решением на данный момент, которое просто подсчитывает количество комментариев по мере необходимости. Это просто прагматичное кодирование.

Если, по линии, вы обнаружите, что это вызывает даже небольшие проблемы с производительностью, тогда вы должны заменить его кешированным значением с помощью хранимой процедуры или аналогичной, но, скорее всего, это будет вам очень хорошо.

Итак, я понимаю, что это, вероятно, не тот четкий ответ, который вы хотите, но: если вы делаете что-то маленькое, займитесь простым решением (считая); если вы делаете что-то большее, займитесь простым решением (подсчет), а затем перейдите на более сложное решение (сохраняя значение), если найдете, что вам это нужно. Если вы знаете, что то, что вы делаете, гарантированно будет большим (вам повезет!), Тогда отлично, идите прямо к более сложному решению.

Примечание: Я сказал «более сложное решение», но, как вы, вероятно, знаете, это всего лишь сложнее, чем простое решение.

+0

Это так ясно, как ответ, который мне нужен Я собираюсь следовать за YAGNI на данный момент :) – Pat

+0

Рад это слышать - удачи! :) – TwoStraws

1

После того, как произведение создано или удалено, вы должны рассчитывать прямо в час.

Если вы считаете, что каждый раз, когда вы сделаете некоторые ненужные запросы.

1

Выполнение MYSQL count для каждых комментариев пользователей будет самым простым способом пойти об этом, как показано ниже:

$userid= ? ; 

SELECT COUNT(*) FROM comments WHERE userid=userid 

обновления таблицы каждое времени приведет к многократному MYSQL вызывает каждый раз, когда необходимо запросить комментарии ,

В качестве альтернативы вы можете создать столбец для подсчитывать комментарии в потребителе, а также добавлять комментарии для этого конкретного пользователя каждый раз, когда он/она добавляет комментарий, то просто запрашивая пользователь вы будете иметь комментарии для этого пользователя

+0

Мне известно о том, как это сделать, я просто не знал, какой метод использовать: P – Pat