大数据翻页_大数据分页方案

软件开发中,常用要用到分页、计算总数,数据量超过千万、上亿的时候,往往count 的需要超过 1s 的执行时间,甚至 3-5s,对于一个追求性能的前沿团队来说,这个不能忍啊!

为什么会慢?

mysql 会对所有符合的条件做一次扫描。

select count(*) from table_a where a = '%d' ...

如果 a=%d 的数据有 1000W 条,那么数据库就会扫描一次 1000W 条数据库。如果不带查询条件,那这种全表扫描将更可怕。

count(*) 和 count(1)、count(0)

count(expr) 为统计 expr 不为空的记录

count(*) 它会计算总行数,不管你字段是否有值都会列入计算范围。

coount(0),count(1) 没有差别,它会计算总行数

Example 1:

mysql> explain extended select count(*) from user;

...

1 row in set, 1 warning (0.34 sec)

mysql> show warnings;

+-------+------+--------------------------------------------------+

| Level | Code | Message |

+-------+------+--------------------------------------------------+

| Note | 1003 | select count(0) AS `count(*)` from `user` |

Example 2:

mysql> select count(*) from login_log

-> ;

+----------+

| count(*) |

+----------+

| 2513 |

+----------+

1 rows in set (0.00 sec)

mysql> select c

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值