我想使用q查询计算在KDB +数据库中插入的记录数。 当前,使用以下查询:
count select from executionTable where ingestTimeStamp within 2019.09.07D00:00:00.000000000 2019.09.08D00:00:00.000000000
它有效,但性能不高。对其效率提出的任何建议都将受到高度赞赏。
谢谢您的帮助。
答案 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提及的“日期”。