qq_41778630
2018-03-02 04:54
采纳率: 100%
浏览 10.4k
已采纳

有一个表数据量每天存入数据3百万左右,现在千万级,要筛选表里一些数据,怎么查才能速度快一点

图片说明![图片说明](https://img-ask.csdn.net/upload/201803/02/1519966424_539301.png)图片说明

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

14条回答 默认 最新

  • WalkingMonstrel 2018-03-02 06:54
    已采纳

    这个问题够写一篇分析报告了。
    1. 首先每天三百万数据,这张表再大,最后都会撑不住,横向分表是自然的事。估计最先想到的是按时间来分吧。
    2. 查询速度的问题可使用的技术方案有很多,但先要做的是对业务查询的分析。找出瓶颈,才能有的放矢。试列举几种:
    i 缓存,已查过的放内存,没查过的才查
    ii 索引,合理利用索引,甚至构造自己的索引表
    ii 并行,可以多线程/多进程甚至分布式
    iV 分离读写,使用数据仓库,专门面对查询
    V 预处理,我先查,等你来问的时候,我只是把结果告诉你,能不快么?

     最后一个方针:与其榨出每条查询语句的效率,不如从架构上总体设计,这才是正确的展开方式。
    
    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • huibinwei 2018-03-02 05:16

    按日期分表呗,我看查询的时候都是按日期查询的

    评论
    解决 无用
    打赏 举报
  • 热带北极熊 2018-03-02 05:43

    关键字段建索引,显示数据时分页,每次查询只查询当页的数据

    评论
    解决 无用
    打赏 举报
  • qq_39738497 2018-03-02 05:57

    用索引或者分表来查询

    评论
    解决 无用
    打赏 举报
  • 王的喵 2018-03-02 06:19

    建议分表做,还有就是优化sql语句 尽量不要让字段出现null存储,sql语句里有时间大小写比对,建议时间值用int类型存储,时间即时间戳。

    评论
    解决 无用
    打赏 举报
  • dragon_data 2018-03-02 06:32

    分区应该也行吧

    评论
    解决 无用
    打赏 举报
  • duyi 2018-03-02 06:42

    分区表,加适当的索引

    评论
    解决 无用
    打赏 举报
  • mazegong 2018-03-02 06:43

    1,建议分表做,还有就是优化sql语句 尽量不要让字段出现null存储,sql语句里有时间大小写比对,建议时间值用int类型存储,时间即时间戳。
    2,用索引或者分表来查询
    3,按日期分表呗,我看查询的时候都是按日期查询的

    评论
    解决 无用
    打赏 举报
  • zhengaoxiang 2018-03-02 06:45

    我知道,但是没写过,不知是否可行?首先哪,数据千万级,看您的查询条件是instationdate等于具体日期,此时哪,后边的筛选条件就先不要了,先把
    数据从数据库里拿出来(要知道筛选条件越多,查询效率越慢),丢到mogoDb里面处理,支持条件筛选;或直接java里面处理,不知会不会内存溢出哪。
    哈哈,有用的话给我点C币吧。

    评论
    解决 无用
    打赏 举报
  • W_爱永恒_T 2018-03-02 06:52

    如果做成常用查询功能,建议使用搜索引擎,比如开源的es,这样就可以将多个字段作为检索条件,方便后续扩展。

    评论
    解决 无用
    打赏 举报
  • baidu_28032147 2018-03-02 07:26

    按数据的日期分表作为缓冲表,再进行并行查询

    评论
    解决 无用
    打赏 举报
  • liuzhx0302 2018-03-02 07:38

    开源的es,这样就可以将多个字段作为检索条件,方便后续扩展

    评论
    解决 无用
    打赏 举报
  • 鼠小 2018-03-02 08:05

    分而治之在,,分库,,分表,分成小块,,逐个筛选,汇总,,,

    这样可以多线程,甚至多个服务器来筛选,,

    评论
    解决 无用
    打赏 举报
  • 孤芳不自賞 2018-03-02 08:55

    我有两篇博客都是处理百万级和千万级的,你可以看一下。
    http://blog.csdn.net/en_joker/article/details/78481007
    http://blog.csdn.net/en_joker/article/details/78161898
    不过,按照你这个量,我建议用其他方法替代,比如solr,es,或者mongodb。

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题