数据库-数据库中如何快速获取某些条件下的count(*)

发布于 2017-01-14 03:38:44 字数 132 浏览 1273 评论 4

背景是需要经常性的获取某些条件下的count(*),对于小数据量直接count(*)可以,但数据量大了后呢,目前的做法是开另一个表,将这些条件下的count单独存起来,这样虽然访问快了,但维护起来比较困难。有什么两全其美的办法吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

甜柠檬 2017-09-30 13:24:47

如果使用数据库缓存呢?当该表数据产生变化才执行。

晚风撩人 2017-09-18 02:50:30

这个主要是看对数据的实时性要求是否高,要求不高的话可以把各种条件下的count 数放在memcache 里,key 中组合条件。定时更新memcache中各种条件下的count数。
这种方法基本上不用维护,写个crontab定时更新,或者直接依靠memcache的过期时间,而且效率比较高,但是数据不是实时的。
实时性要求比较高的话,那么基本思路就是采用消息队列异步更新,对这个表进行增,删,改 后,将这个更新的任务添加的队列,然后处理这个任务时需要对已知的条件进行全部更新,数据存放在db表中或缓存中都可以。

晚风撩人 2017-08-31 18:46:22

如果对数据精确度要求不高的话,可以取一个折中的方案。定时把目标表的总数存到中间表,程序直接从中间表获取总数。

瑾兮 2017-05-12 13:05:26

传统的做法是读写分离,主从同步,主数据库只写,从数据库只读,这样效率会提高很多。
不过你的问题是只简单的处理count一些查询,除了做一些查询优化外,如果涉及表不多,中间表的方案可能更方便。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文