很多人认为count查询非常快,但是在加上筛选条件那就是未必的了。测试:user表中4000w数据
为什么统计全部速度快,不统计全部却慢了?
因为mysql默认已经统计过表中的总记录了,所以查询非常快
假设需要查询数据中user表id大于1000的数据,如何快速查询?(上面的查询用时7秒!)
原理:需要id大于1000的人数=总人数-id小于1000的人数(总人数mysql秒完成,id小于1000的人数记录少查询快)
以上的方法只是解决了部分场景,假如现在需要统计用户注册渠道呢?假设注册渠道有QQ和微信,并且2种渠道注册人数一致,数据达到百万。
那么 select count( ) from user where way='qq'和 select count( ) from user where way<>'qq' 无区别.
这种情况就建议建立统计表,用户注册事件发生即可+1 *** 作.
COUNT()函数返回匹配指定条件的行数
COUNT(column_name)
函数返回指定列的值的数目(NULL
不计入)
我们拥有下列
"Orders"
表:
O_Id
OrderDate
OrderPrice
Customer
1
2008/12/29
1000
Bush
2
2008/11/23
1600
Carter
3
2008/10/05
700
Bush
4
2008/09/28
300
Bush
5
2008/08/06
2000
Adams
6
2008/07/21
100
Carter
计算客户
"Carter"
的订单数。
SQL
语句:
SELECT
COUNT(Customer)
AS
CustomerNilsen
FROM
Orders
WHERE
Customer='Carter'
以上
SQL
语句的结果是
2,因为客户
Carter
共有
2
个订单:
CustomerNilsen
2
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)