Kdb 从历史数据库查询不同的值

Kdb 从历史数据库查询不同的值,kdb,Kdb,如果我在大型历史数据库上运行此查询而不指定日期,KDB是否足够聪明,可以从索引中检索状态值而不关闭数据库 选择distinct status from trades以使用索引检索,kdb提供“g”属性。单独使用Distinct可能需要更多的时间,这取决于您的表的大小。这将是线性搜索,而不使用“g”属性 检查此-> 让我们看一个简单的例子: q) a: 10000000#1 2 3 5 q) b:`g#a q) \ts distinct a 68134217888 q) \ts

如果我在大型历史数据库上运行此查询而不指定日期,KDB是否足够聪明,可以从索引中检索状态值而不关闭数据库


选择distinct status from trades

以使用索引检索,kdb提供“g”属性。单独使用Distinct可能需要更多的时间,这取决于您的表的大小。这将是线性搜索,而不使用“g”属性

检查此->

让我们看一个简单的例子:

  q) a: 10000000#1 2 3 5
  q) b:`g#a
  q) \ts distinct a
68134217888

  q) \ts distinct b
0288


差异表明,g属性在搜索过程中所占用的时间和空间上有很大的差异。这是因为EG属性创建并维护向量上的索引。

kdb可能判断所有不同状态的唯一方法是读取每个分区。是的,这将占用大量内存,但除非您自己想要维护所有不同状态的缓存,否则您无法执行其他操作。如前所述,属性将加快查询速度,但查询时间仍将仅随分区数的增加而增加。

或者,尽管不是一种故障安全方法,但根据分区间值的分布情况,对一些值进行采样并检查这些值可能是一种快速的启发式方法