分页查询,查个 total 很难吗?

2018-04-02 10:42:22 +08:00
 wxsm

如题。一个破接口,后端开发人员三番五次说要不传 total,让我去别的地方取,说什么查个 total 相当全表扫,我真是服气。

14195 次点击
所在节点    程序员
95 条回复
EmdeBoas
2018-04-02 13:17:34 +08:00
@winglight2016 kylin 就是做预计算的,支持百亿级数据查询毫秒出结果...一般查历史数据的时候好用,比如说今天 4-2 号,你只需要查 4-1 号以及之前的数据,就比较适用,每天写个定时任务,增量把前一天的数据预计算好给第二天用。kylin 搭起来跟维护的成本相当大的...
EmdeBoas
2018-04-02 13:18:17 +08:00
@nigelvon 然而查询条件会变,数据的量也可能在变
VincentWang
2018-04-02 13:20:35 +08:00
@nigelvon 不太好缓存吧,即使不考虑数据库里的数据量在变化,查询条件也会变。
nigelvon
2018-04-02 13:20:49 +08:00
@EmdeBoas 数据变更不会更新缓存?查询条件组合多不会多设置几条缓存组合?
恕我直言,连 total 都不愿意给的后端我不信数据多到 count 都慢的程度
linbiaye
2018-04-02 13:20:50 +08:00
如果是 Mysql 的 InnoDB 的 count 不带 where 就是全表扫描,带了 where 看具体的 where,所以后端说的没毛病,表大了没有利用好索引或者没法利用索引就是很慢。
abusizhishen
2018-04-02 13:22:32 +08:00
他可以对指定来源屏蔽这个参数
EmdeBoas
2018-04-02 13:23:02 +08:00
@nigelvon .....我最近做的查询条件组合起来可能有上万种....做 count 多 9 秒起...
sagaxu
2018-04-02 13:27:12 +08:00
@nigelvon 查询条件的组合,数量是乘起来的,超过几十个的时候,更新缓存的成本会很高
nigelvon
2018-04-02 13:28:15 +08:00
@EmdeBoas 你这根本就不光是 count 的问题,连数据都查不出来,上搜索引擎。从楼主描述来看取数据没问题,那么 count 不存在简单方案解决不了的性能问题。
scnace
2018-04-02 13:32:00 +08:00
实时数据的 Count 真的很麻烦(耗性能) 分页那种 Case 的话 可以把 Total 拉到比较大 或者 同意楼上的维护单独表 count 的做法(鸟书也推荐这么做) P.S. es 并不是银弹 也要考虑到多个数据源的维护成本
eslizn
2018-04-02 13:34:33 +08:00
@nigelvon 取数据没问题不代表 count 没问题
EmdeBoas
2018-04-02 13:34:44 +08:00
@nigelvon 老哥,你这根本不讲道理,你又不知道实际情况,你以为想用搜索引擎就用?都得结合自己组有的资源,解决方法有一万种,但更重要的是资源复用和可维护性
whypool
2018-04-02 13:35:59 +08:00
话说,数据量多的时候存自增 id,拿 max 会不会快点?
debuggerx
2018-04-02 13:36:27 +08:00
上个项目里有个查询,数据量大概在 300W 左右,每次都查出 count 的话还是比较影响性能的,查询一般在 1~3 秒,但是分析下来这个接口是一个下滑展示,而且没有提供转跳到某一页的功能,也就是说有用户死命地不停滑动也要一天才会请求到最后的数据,于是我专门给这个接口写了个分页查询,total 从 redis 里取,redis 里的值只在每天凌晨更新一次……
startar
2018-04-02 13:38:26 +08:00
如果后端是单纯的 db 的话,实时查 count 确实有可能很慢啊。一般都要扫索引。如果真要实时查就得预计算,上 kylin。
建议对自己不熟悉的领域不要那么想当然。。
Socket
2018-04-02 13:41:40 +08:00
似曾相识,这玩意儿没 total 可不行,panigation 这种组件不传 total 没法展示页码,你只能点一下查一下,有就展示,没有就展示没数据
cheetah
2018-04-02 13:47:46 +08:00
哈哈看看豆瓣广播现在也没总页数
arslion
2018-04-02 13:49:20 +08:00
不讲清楚场景发这帖子干嘛?
wangbenjun5
2018-04-02 13:49:22 +08:00
说实话,那种几百上千万的数据表你们分页是给人看的吗?
wwdyy
2018-04-02 13:51:27 +08:00
那就跟产品说,后端说做不了分页,只能做下一页这样的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/443491

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX