MySQL count(*) 性能优化

MySQL count(*) 性能优化,第1张

很多人认为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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8709688.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-20
下一篇 2023-04-20

发表评论

登录后才能评论

评论列表(0条)

保存