SELECT count(DeviceName) FROM AllDevice;
有没有更有效的办法,现在可能需要比较频繁的获得一张表的行数,表是 1-10 亿条数据,但只在最后 10 条频繁的添加或删除。
也就是这张表,加 3-5 条数据,然后删除 7 到 8 条数据,操作比较频繁,但也有偶发,比较大的删除或添加
现在需要比较频繁的去查询这张表的行数,有没有更好的办法
1
faust24601 2021-03-19 17:08:37 +08:00 via iPhone
加一个表存数量字段,增删的时候更新这个字段
|
2
RRRoger 2021-03-19 17:10:09 +08:00 1
新建一张表记录这个 count 的动态变化;
先初始化创建一条数据, +M (当前表行数) 每次发生添加删减的时候, 创建一条记录 +N or -N 最后对这个列求和 不知道可行不可行 |
3
Kilerd 2021-03-19 17:13:38 +08:00
先读一次出来放在 redis,然后每次修改的地方都做 INC DEC 的操作,然后定时刷新一次就可以了。
|
4
andy2415 2021-03-19 19:01:35 +08:00
缓存一个变量 每次增删维护一下变量值
|
5
xupefei 2021-03-19 20:03:06 +08:00 via iPhone
有个邪道是 partition by DeviceName,然后 count 就会依赖 column metadata 进行计数。
不过 sqlite 有没有这些 metadata 我不知道… |
6
codehz 2021-03-19 21:32:08 +08:00 via Android
(提供个思路,没测试过性能表现)
用触发器去更新另一个表的字段。。。根据插入和删除自动维护 不确定会对插入性能造成多少影响) |
7
bthulu 2021-03-20 13:59:22 +08:00
触发器啊
|