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

时间:2014-09-13 10:36:36

标签: kdb

如果我在没有指定日期的情况下在大型历史数据库上运行此查询,KDB是否足够智能从索引中检索状态值而不是将数据库关闭?

select distinct status from trades

2 个答案:

答案 0 :(得分:3)

要使用索引进行检索,kdb提供了'g#'属性。单独区分可能需要更多时间,这取决于您的表的大小(它将是没有`g#属性的线性搜索)。

检查此 - > http://code.kx.com/q4m3/8_Tables/#88-attributes

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

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

68 134217888

  q) \ts distinct b

0 288

差异表明g# attribute makes a lot of difference in time and space taken during searching. It is because g#属性在向量上创建并维护索引。

答案 1 :(得分:3)

kdb可能告诉所有不同状态的唯一方法是从每个分区读取。是的,这将占用大量内存,但除非您自己想要维护所有不同状态的缓存,否则您无法做任何事情。如前所述,一个属性会加快查询速度,但查询时间仍然只会随着分区数量而缩放。