【发布时间】:2013-05-10 13:58:35
【问题描述】:
我在本地机器上创建了一个贸易数据库,按日期分区。
select from trade where date=x
大约需要 100 毫秒,但当我这样做时:
select from trade where date=x,sym=`alpha
大约需要 1-3 秒。
我缺少什么技巧(使用`g#sym 会出现错误'par)。
【问题讨论】:
我在本地机器上创建了一个贸易数据库,按日期分区。
select from trade where date=x
大约需要 100 毫秒,但当我这样做时:
select from trade where date=x,sym=`alpha
大约需要 1-3 秒。
我缺少什么技巧(使用`g#sym 会出现错误'par)。
【问题讨论】:
您可以使用 dbmaint.q 将属性应用于分区表。见here。具体看setattrcol函数。添加属性将显着加快查询速度。如果可能,我建议在 id 列上使用 p#。这对于查找应该更快,但更难维护。
【讨论】:
:/kdb/testdb;trade;sym;p#]。它给了我一个类型错误。我使用 dbmaint.q 给出的示例数据库进行了尝试,它运行良好,但使用我的示例数据库它给出了类型错误。我正在尝试检查我在创建示例数据库时是否遗漏了什么。如果您知道任何明显的错误,请提出建议。
g#. or should i add a g#。正如你提到的,我只尝试了 p(没有 #),但它给了我一个错误 u-fail.Studio 提示:可能这个错误是指无法应用 u# to data (not unique values), e.g u#1 1。