V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
QBugHunter
V2EX  ›  数据库

Sqlite3 如何更好的获得表行数

  •  
  •   QBugHunter · 2021-03-19 16:54:47 +08:00 · 1456 次点击
    这是一个创建于 1371 天前的主题,其中的信息可能已经有所发展或是发生改变。
    SELECT count(DeviceName) FROM AllDevice;
    

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

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

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

    7 条回复    2021-03-20 13:59:22 +08:00
    faust24601
        1
    faust24601  
       2021-03-19 17:08:37 +08:00 via iPhone
    加一个表存数量字段,增删的时候更新这个字段
    RRRoger
        2
    RRRoger  
       2021-03-19 17:10:09 +08:00   ❤️ 1
    新建一张表记录这个 count 的动态变化;

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

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

    最后对这个列求和

    不知道可行不可行
    Kilerd
        3
    Kilerd  
       2021-03-19 17:13:38 +08:00
    先读一次出来放在 redis,然后每次修改的地方都做 INC DEC 的操作,然后定时刷新一次就可以了。
    andy2415
        4
    andy2415  
       2021-03-19 19:01:35 +08:00
    缓存一个变量 每次增删维护一下变量值
    xupefei
        5
    xupefei  
       2021-03-19 20:03:06 +08:00 via iPhone
    有个邪道是 partition by DeviceName,然后 count 就会依赖 column metadata 进行计数。
    不过 sqlite 有没有这些 metadata 我不知道…
    codehz
        6
    codehz  
       2021-03-19 21:32:08 +08:00 via Android
    (提供个思路,没测试过性能表现)
    用触发器去更新另一个表的字段。。。根据插入和删除自动维护
    不确定会对插入性能造成多少影响)
    bthulu
        7
    bthulu  
       2021-03-20 13:59:22 +08:00
    触发器啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2500 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 15:46 · PVG 23:46 · LAX 07:46 · JFK 10:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.