【发布时间】:2012-10-31 19:21:26
【问题描述】:
我有一个数据库,其中包含大约五个可能的索引列,所有这些列都有不同的用途。我们称它们为 System、Source、Heat、Time 和 Row。一起使用 System 和 Row 将生成一个唯一键,如果按 System-Row 排序,数据库还将针对五个索引变量的任意组合进行排序(按照我上面列出的顺序)。
我的问题是我使用这些列的所有组合:有时我想将每个 System-Row 加入到下一个 System-(Row+1),有时我想通过 System-Source-Heat 进行 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 列中的任何一个按排序顺序。
【问题讨论】:
-
您需要确定在执行 CUD 语句时是否会牺牲与查询执行时间相关的性能。您是否考虑过创建视图?
标签: sql sql-server indexing