Sqlite3 如何更好的获得表行数

2021-03-19 16:54:47 +08:00
 QBugHunter
SELECT count(DeviceName) FROM AllDevice;

有没有更有效的办法,现在可能需要比较频繁的获得一张表的行数,表是 1-10 亿条数据,但只在最后 10 条频繁的添加或删除。

也就是这张表,加 3-5 条数据,然后删除 7 到 8 条数据,操作比较频繁,但也有偶发,比较大的删除或添加

现在需要比较频繁的去查询这张表的行数,有没有更好的办法

1421 次点击
所在节点    数据库
7 条回复
faust24601
2021-03-19 17:08:37 +08:00
加一个表存数量字段,增删的时候更新这个字段
RRRoger
2021-03-19 17:10:09 +08:00
新建一张表记录这个 count 的动态变化;

先初始化创建一条数据, +M (当前表行数)

每次发生添加删减的时候, 创建一条记录 +N or -N

最后对这个列求和

不知道可行不可行
Kilerd
2021-03-19 17:13:38 +08:00
先读一次出来放在 redis,然后每次修改的地方都做 INC DEC 的操作,然后定时刷新一次就可以了。
andy2415
2021-03-19 19:01:35 +08:00
缓存一个变量 每次增删维护一下变量值
xupefei
2021-03-19 20:03:06 +08:00
有个邪道是 partition by DeviceName,然后 count 就会依赖 column metadata 进行计数。
不过 sqlite 有没有这些 metadata 我不知道…
codehz
2021-03-19 21:32:08 +08:00
(提供个思路,没测试过性能表现)
用触发器去更新另一个表的字段。。。根据插入和删除自动维护
不确定会对插入性能造成多少影响)
bthulu
2021-03-20 13:59:22 +08:00
触发器啊

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

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

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

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

© 2021 V2EX