我有一个包含大约五个可能的索引列的数据库,所有这些列都以不同的方式有用。我们称它们为 System、Source、Heat、Time 和 Row。一起使用 System 和 Row 将生成一个唯一键,如果按 System-Row 排序,数据库还将针对五个索引变量的任意组合进行排序(按照我上面列出的顺序)。
我的问题是我使用这些列的所有组合:有时我想将每个系统行加入下一个系统(行 + 1),有时我想通过系统源热进行 GROUP 或 WHERE,有时我想查看 System-Source WHERE Time is in a specific window 的所有条目等。
基本上,我想要一个索引结构,其功能类似于这五个索引的每个可能的排列(当然,以正确的顺序),而不是实际进行每个排列(尽管如果有必要我愿意这样做)。我正在做统计/分析,而不是传统的数据库工作,因此索引的大小和创建/更新它的速度不是问题;我只关心加快我的即兴查询,因为我倾向于思考它们,运行它们,等待 5-10 分钟,然后再也不使用它们。因此,我主要关心的是将“等待 5-10 分钟”减少到更像“等待 1-2 分钟”。
我的排序数据看起来像这样:
Sys So H Ti R
1 1 0 .1 1
1 1 1 .2 2
1 1 1 .3 3
1 1 2 .3 4
1 2 0 .5 5
1 2 0 .6 6
1 2 1 .8 7
1 2 2 .8 8
编辑:它可能会简化一些事情,系统实际上总是需要作为第一列包含在内,以使其他 4 列中的任何一个按排序顺序排列。