我在組項目中工作。我有這些表:使用計數函數或在sql中創建特定列進行計數
SELECT COUNT(1) AS Counts FROM [Groups].[GroupMembers]
WHERE GroupId=Id;
或者,我可以添加其他列Groups
表計數,每一次新的成員加入:
我可以通過使用count函數獲取成員對每個組的數量對該組,該字段將增加1。使用計數功能還是添加另一列進行計數會更好?換句話說,每種方法的優點和缺點是什麼?
我在組項目中工作。我有這些表:使用計數函數或在sql中創建特定列進行計數
SELECT COUNT(1) AS Counts FROM [Groups].[GroupMembers]
WHERE GroupId=Id;
或者,我可以添加其他列Groups
表計數,每一次新的成員加入:
我可以通過使用count函數獲取成員對每個組的數量對該組,該字段將增加1。使用計數功能還是添加另一列進行計數會更好?換句話說,每種方法的優點和缺點是什麼?
它取決於你的表引擎。如果你的表引擎是MyISAM
,它會更快,因爲它只是從存儲值中讀取表中的行數,但Innodb
引擎需要執行全表掃描。
建議不要在表格本身中存儲計數,因此如果這是您擔心的問題,請儘可能使用MyISAM
引擎。
在表中存儲值無需額外地在每個新/丟失的成員資格上查詢UPDATE
。
根本不建議創建一列來存儲計數。
當你想要每個組的計數,你可以使用簡單的Select
查詢來顯示每個組的計數。
SELECT G.groupid,
Count(userid)
FROM groups G
LEFT OUTER JOIN groupmembers GM
ON G.groupid = GM.groupid
GROUP BY G.groupid
如果你想添加一個新列,那麼你將需要一個Trigger
上GroupMembers
表更新Groups
表計列,當一個新的用戶添加到任何組中GroupMembers
表