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

小白求助, 5 千万数据量的表查询如何处理

  •  
  •   qqqccc · 2020-08-17 17:00:16 +08:00 · 1917 次点击
    这是一个创建于 1593 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有一张 5 千万数据量的表,有四个字段维度查询,地市、区县、然后继续下钻...这种数据应该怎样存储好点,能通过缓存中间件处理吗?如果查询维度是地市,地市总共 13 个,索引也用不上,当然查询会分页。

    12 条回复    2020-08-17 17:32:03 +08:00
    kxjhlele
        1
    kxjhlele  
       2020-08-17 17:04:27 +08:00
    多级分区如何,5000 万 也不大,多列索引也不会存在性能问题吧
    liprais
        2
    liprais  
       2020-08-17 17:05:13 +08:00
    要查啥,明细还是统计结果,明细就建分区呗,统计结果预先计算好
    des
        3
    des  
       2020-08-17 17:05:40 +08:00
    数据复杂度 /查询复杂度、写入 /更新数量、要求实时性以及有多少查询不说一下吗
    qqqccc
        4
    qqqccc  
    OP
       2020-08-17 17:08:23 +08:00
    查的是明细,数据不复杂,就是量比较多,四个维度查询。开发不涉及写操作
    @des
    @liprais
    des
        5
    des  
       2020-08-17 17:12:49 +08:00
    @siiiagtb
    数据下钻不该是聚合的数据吗,为什么会是明细啊
    没有写的话,建议就查询好了,直接放另一个表里面
    qqqccc
        6
    qqqccc  
    OP
       2020-08-17 17:16:00 +08:00
    @kxjhlele 主要是如果查询维度是地市,索引就用不上了
    qqqccc
        7
    qqqccc  
    OP
       2020-08-17 17:17:08 +08:00
    @des 什么意思,一张表解决吗,但是通过地市分页查询的话就要 3-7s,性能接受不了
    des
        8
    des  
       2020-08-17 17:18:19 +08:00
    @siiiagtb 是让你事先查好了,放到另一个表里面,要用的话直接来查这张表
    sadfQED2
        9
    sadfQED2  
       2020-08-17 17:19:26 +08:00 via Android
    分成 4 张表?地市一张,区县一张......
    kxjhlele
        10
    kxjhlele  
       2020-08-17 17:20:16 +08:00
    @siiiagtb 怎么可能,你先试试吧,前面的列 索引有效的
    zxyroy
        11
    zxyroy  
       2020-08-17 17:30:48 +08:00
    @siiiagtb 先 explain 一下确保索引有生效。另外是不是用了 LIMIT,翻页的时候尽量用 rolling id 不要用 limit offset,性能会好很多
    takemeaway
        12
    takemeaway  
       2020-08-17 17:32:03 +08:00
    五千万数据发给我,我帮你做方案。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   949 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 21:42 · PVG 05:42 · LAX 13:42 · JFK 16:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.