大数据分页详细方案

当数据量达到千万、上亿级别时,分页查询的效率成为性能瓶颈。本文探讨了为何分页会变慢,对比了`count(*)`、`count(1)`、`count(0)`的区别,并提出了解决方案,包括使用MyISAM引擎、维护总数缓存、正反偏移分页、游标定位以及缓存策略。同时讨论了其他数据库引擎的优化技巧和大神的建议,旨在提高大数据分页查询的性能。
摘要由CSDN通过智能技术生成

软件开发中,常用要用到分页、计算总数,数据量超过千万、上亿的时候,往往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 |
+-------+------+--------------------------------------------------+
| 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值