使用SQLAlchemy为MySQL中的每个组不同地应用过滤器

时间:2018-08-22 15:16:43

标签: mysql sqlalchemy

我想不通在合理的时间内对每组限制N行以不同方式应用过滤器的方法。这是一张桌子:

Data
    - id (int, pk)
    - pair_id (int, fk)
    - tidx (int, unique)
    - v1 (int)
    - v2 (int)
    ...
    - v10 (int)
    - period (int)

每行的周期值具有枚举值之一(60、180、300、600、900,...,3600、7200)。对于所有期间和给定的对ID(1、2、3,...,10),是否可以进行有效地满足以下数据集的查询?

所需数据集:
以“ @”开头的单词是变量。

[
  (
    pair_id: 1,
    period: 60, 
    array of (tidx, v1, v2, v3, ..., v4) 
      where tidx > (@base_tidx / 60 - @delta) order by tidx DESC limit N
  ),
  (
    pair_id: 1,
    period: 180,
    array of (tidx, v1, v2, v3, ..., v10) 
      where tidx > (@base_tidx / 180 - @delta) order by tidx DESC limit N
  ),
  ...,
  (
    pair_id: 2,
    period: 60,
    array of (tidx, v1, v2, v3, ..., v10) 
      where tidx > (@base_tidx / 60 - @delta) order by tidx DESC limit N
  ),
  ...,
  (
    pair_id: 10,
    period: 7200,
    array of (tidx, v1, v2, v3, ..., v10)
      where tidx > (@base_tidx / 7200 - @deta) order by tidx DESC limit N
  )
]

元组的数量为(the length of periods) * (the length of pair IDs),这虽然很小,但是每组数组的元组总数大约为100K,这非常繁重。 如果您知道使用MySQL查询或带有SQLAlchemy ORM的MySQL在合理的时间(约5m)内获取诸如上述数据集之类的行的任何方法,请与我分享您的智慧。

0 个答案:

没有答案