我有这样的数据集:计数2列
id uid follows_uid status
1 1 2 ACTIVE
2 1 3 ACTIVE
3 3 1 ACTIVE
4 4 1 ACTIVE
5 2 1 ACTIVE
上给予uid
我要计算有多少用户在下面,多少后跟(给定用户)。
结果集将是:
following followers
2 3
这里是做工作的查询:
SELECT COUNT(*) as following,
(SELECT COUNT(*) FROM user_followers where follows_uid = 1 ) as followers
FROM user_followers
WHERE uid = 1 and `status` = 'ACTIVE'
现在的问题是,In't有任何其他方式来完成这件事?或者它是实现这一目标的最佳方式?
我的查询和这个有什么区别?请用优化角度解释 – Shaharyar
@Shaharyar抱歉,没有注意到它们是相同的。我相信使用子查询是最快的方法,如果适当的列索引,因为然后每个计数可以利用索引然后 – FuzzyTree
谢谢,您的意见是合理的所有答案。现在你会怎么说@davmos的回答?它是否比实际查询更优化? – Shaharyar