在kdb中的时间点查询

时间:2013-05-29 15:32:05

标签: kdb

我经常需要选择分区表中的最后一行,直到某个时间。这就是我使用的:

select last A,last B,last C from mytable where date=2013.05.23,ts<10:30:00,A in (`Bob`Jane)

此查询可能会将所有`Bob`Jane行加载到10:30:00,然后返回最后一行。有没有更有效的方法在kdb中运行时间点查询?

我桌子的一些基准数据:

/select all data
\t t: select ...
1724i

count t
2225311i

\t select ... ts<15:00:00
2040i

\t select ... ts<12:00:00
1092i

\t select ... ts<10:00:00
521i

2 个答案:

答案 0 :(得分:1)

aj提供您正在寻找的功能:

http://code.kx.com/q/ref/joins/#aj-aj0-asof-join

在提供的链接上有aj的一些性能提示。

答案 1 :(得分:1)

另一种选择是使用以下内容:

select A,B,C from mytable where date=2013.05.23,ts<10:30:00,A in (`Bob`Jane),i=last i

虽然我怀疑你现在的表现会有什么改善。

更重要的是表的类型(在内存中/展开/分区(包括它的分区方式))和使用的属性(如果有的话)。