使用count函数或创建特定的列来计算sql

时间:2016-01-30 15:39:15

标签: sql-server count

我在团队项目上工作。我有那些表: enter image description here

我可以使用count函数获取每个组的成员数:

SELECT COUNT(1) AS Counts FROM [Groups].[GroupMembers]
WHERE GroupId=Id;

或者我可以向Groups表添加另一列进行计数,每次新成员加入该组时,此字段将增加1。使用计数功能或添加另一列进行计数更好吗?换句话说,每种方法的优点和缺点是什么?

2 个答案:

答案 0 :(得分:2)

根本不建议创建用于存储计数的列。

当您想要每个组的计数时,您可以使用简单的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

答案 1 :(得分:1)

这取决于你的桌面引擎。如果你的表引擎是MyISAM,它会更快,因为它只是从存储的值中读取表中的行数,但是Innodb引擎需要进行全表扫描。

建议不要在表格内部存储计数,因此如果您担心这一点,请尽可能使用MyISAM引擎。

在表中存储值将不必要地对每个新的/丢失的成员资格进行额外的UPDATE查询。