查询Q中的时间戳列

时间:2019-09-09 16:21:58

标签: q kdb

我想使用q查询计算在KDB +数据库中插入的记录数。 当前,使用以下查询:

count select from executionTable where ingestTimeStamp within 2019.09.07D00:00:00.000000000 2019.09.08D00:00:00.000000000

它有效,但性能不高。对其效率提出的任何建议都将受到高度赞赏。

谢谢您的帮助。

2 个答案:

答案 0 :(得分:1)

鉴于您提供的信息,我假设您正在查询磁盘上的数据,这些数据可能保存在标准日期分区结构中。在这种情况下,应该在指定时间子句之前先指定日期子句,这样可以防止搜索 all 日期目录。

select from executionTable where date=2019.09.07, ingestTimeStamp within 2019.09.07D00:00:00.000000000 2019.09.08D00:00:00.000000000

我建议您仔细阅读query optimization上的白皮书,它将为良好的查询结构提供一些指导,以及如何利用kdb中的地图缩减功能。

答案 1 :(得分:0)

如果只想计数,则在内部使用“ count i”,如下所示:

q) select count i from executionTable where ingestTimeStamp within 2019.09.07D00:00:00.000000000 2019.09.08D00:00:00.000000000

这只会得到计数,而不是获取查询正在执行的全部数据,这是花费更多时间的原因之一。

如果它是分区数据库,则在过滤器中添加@dateum Biggs提及的“日期”。

相关问题