我想不通在合理的时间内对每组限制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)内获取诸如上述数据集之类的行的任何方法,请与我分享您的智慧。