【问题标题】:Properly indexing large Time Series dataset for complex query正确索引大型时间序列数据集以进行复杂查询
【发布时间】:2019-01-17 01:10:22
【问题描述】:

我有一个大的时间序列数据表。 ~ 8 亿行。我需要正确索引这个大型数据集。我的 UI 有下拉菜单输入作为查询选择器,允许用户更新数据集/可视化。有 7 个潜在的用户输入会提示对表进行查询

通常查询顺序保持一致。阶段>周>团队>对手>地图>回合>统计。我应该在这个序列上创建一个多列索引吗?或者我应该应用多个多列索引?或者第三种选择单独索引作为用户输入的每一列。哪种方法最有效?

def timeseries (map,stage,week,stat,team,opponent,round):
    teams=[team,opponent]
    df=df[df.match_id == id_dict[stage][week][team][opponent]]
    df=df[df.mapname == map] 
    df=df[df.stat_type == stat]
    df=df[df.team.isin(teams)]
    df=df[df.map_round == round]

    --> df to visualization.

match_id 的第一个过滤器需要解决一些问题,因为用户实际上是根据其他输入选择器间接选择匹配 id。 (id_dict 返回游戏的单个匹配 id)

【问题讨论】:

    标签: python postgresql


    【解决方案1】:

    根据您运行的 PostGRES 版本,这篇文章可能有用PostGRES Indexing 进行总结:

    数据库将组合尽可能多的单行索引以进行优化,但仍必须交叉引用完整行。如果您知道某些行组合会比其他行更受欢迎,我会在这些组合上创建组合索引以获得更好的性能。如果你没有插入到表中,拥有许多索引应该不会有什么坏处。

    【讨论】:

      猜你喜欢
      • 2019-09-30
      • 1970-01-01
      • 1970-01-01
      • 2011-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多