2

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

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

此查询可能会在 10:30:00 之前加载所有 `Bob`Jane 行,然后返回最后一行。有没有更有效的方法在 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
4

2 回答 2

1

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

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

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

于 2013-05-29T15:48:14.143 回答
1

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

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

尽管我怀疑您目前拥有的性能会有所改善。

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

于 2013-05-29T16:01:03.073 回答